Есть задача реализовать работу асинхронного Grab::Spider через proxy.
Сейчас это выглядит следующим образом
spider.pyfrom grab import Grab
from grab.spider import Spider, Task
class LinkSpider(Spider):
def __init__(self, extrapage, homepage):
super(LinkSpider, self).__init__()
self.initial_urls = ['some_url']
self.homepage = homepage
self.matches = []
self.OUdict = {}
def task_initial(self, grab, task):
do_smthng
link = 'https://api.ipify.org/?format=json'
g = Grab(url=link)
yield Task('parser', grab=g, link=link)
def task_parser(self,grab,task):
response = grab.response.body
print(response)
В таком случае все выполняется и в консоль принтуется мй текущий ip.
Теперь добавляем proxy-setup
from grab import Grab
from grab.spider import Spider, Task
class LinkSpider(Spider):
def __init__(self, extrapage, homepage):
super(LinkSpider, self).__init__()
self.initial_urls = ['some_url']
self.homepage = homepage
self.matches = []
self.OUdict = {}
def task_initial(self, grab, task):
do_smthng
link = 'https://api.ipify.org/?format=json'
g = Grab()
g.setup(url=link, proxy="120.52.72.47:80", proxy_type="http")
yield Task('parser', grab=g, link=link)
def task_parser(self,grab,task):
response = grab.response.body
print(response)
Прокси я брал с разных сайтов , например :
Так вот в случае такого запуска вызывается первая таска, а во вторую просто не попаедает(тоесть в консоли я не вижу ни ошибок, ни ip-адресса, через пару секунд программа заканчивается.
Подскажите , может я что то упустил и где то надо было сделать глобальную настройку, делал как написано в доках, может есть другой способ? может можно сделать global setup для всех grab обьектов?
элементарно ватсон!
Проблема была в нерабочем прокси, взял рабочую - все заработало.