我使用scrapy版本1.0.5来实现爬虫。目前,我已将REDIRECT_ENABLED = False
和handle_httpstatus_list = [500, 301, 302]
设置为使用301和302响应来抓取页面。但是,由于REDIRECT_ENABLED
设置为False
,因此蜘蛛不会转到Location
响应标头中的目标网址。我怎样才能做到这一点?
答案 0 :(得分:2)
这是一个很长的版本,因为我做了这样的事情,但你需要生成一个带有url,meta和callback参数的请求对象。
但我似乎记得你可以按照以下方式做到:
def parse(self,response):
# do whatever you need to do .... then
if response.status in [301, 302] and 'Location' in response.headers:
# test to see if it is an absolute or relative URL
newurl = urljoin(request.url, response.headers['location'])
# or
newurl = response.headers['location']
yield Request(url = newurl, meta = request.meta, callback=self.parse_whatever)