У меня есть очень простой scrapy spider, который захватывает URL-адреса из файла и затем загружает их. Единственная проблема заключается в том, что некоторые из них перенаправлены на слегка измененный URL-адрес в пределах одного домена. Я хочу получить их в моей функции обратного вызова, используя response.meta, и он работает с обычными URL-адресами, но тогда URL-адрес перенаправленного обратного вызова, похоже, не вызван. Как я могу это исправить? Вот мой код.Scroll callback после перенаправления
from scrapy.contrib.spiders import CrawlSpider
from scrapy import log
from scrapy import Request
class DmozSpider(CrawlSpider):
name = "dmoz"
handle_httpstatus_list = [302]
allowed_domains = ["http://www.exmaple.net/"])
f = open("C:\\python27\\1a.csv",'r')
url = 'http://www.exmaple.net/Query?indx='
start_urls = [url+row for row in f.readlines()]
def parse(self, response):
print response.meta.get('redirect_urls', [response.url])
print response.status
print (response.headers.get('Location'))
Я также пытался что-то вроде этого:
def parse(self, response):
return Request(response.url, meta={'dont_redirect': True, 'handle_httpstatus_list': [302]}, callback=self.parse_my_url)
def parse_my_url(self, response):
print response.status
print (response.headers.get('Location'))
И это не работает.
Нет, мне нужно получить перенаправленные URL-адреса, они хороши в этом случае. – hellpanderrr
вы можете получить их от функции обратного вызова, там должно быть ** перемещено по ссылке ** или вы можете получить URL из местоположения под заголовками –