Я пытаюсь проползать длинным списком веб-сайтов. Некоторые из сайтов в списке start_url переадресовывают (301). Я хочу, чтобы scrapy сканировала перенаправленные веб-сайты из списка start_url, как если бы они также были в списке allowed_domain (а это они не являются). Например, example.com был в моем списке start_url, а список разрешенных доменов и example.com перенаправлялся на foo.com. Я хочу просканировать foo.com.Scrapy Сканирование всех сайтов в start_url, даже если перенаправление
DEBUG: Redirecting (301) to <GET http://www.foo.com/> from <GET http://www.example.com>
Я пытался динамически добавлять allowed_domains в методе parse_start_url и возвращает объект запроса, так что SCRAPY будет вернуться назад и скрести перенаправлены сайты, когда он находится на списке разрешенных доменов, но я все еще получаю:
DEBUG: Filtered offsite request to 'www.foo.com'
Вот моя попытка динамически добавлять allowed_domains:
def parse_start_url(self,response):
domain = tldextract.extract(str(response.request.url)).registered_domain
if domain not in self.allowed_domains:
self.allowed_domains.append(domain)
return Request = (response.url,callback=self.parse_callback)
else:
return self.parse_it(response,1)
Мои другие идеи были попытаться создать функцию в spidermiddleware офф ite.py, который динамически добавляет allowed_domains для перенаправленных веб-сайтов, которые возникли из start_urls, но я не смог заставить это решение работать.
Вы пытаетесь использовать scrapy + selenium webdriver? Здесь есть возможное решение http://stackoverflow.com/questions/27775048/python-selenium-possible-to-cancel-redirect-on-driver-get/27783398#27783398 – aberna