小编典典

如何处理302重定向中的scrapy

scrapy

抓取网站时,我从服务器收到302响应:

2019-04-01 21:31:51+0200 [ahrefs-h] DEBUG: Redirecting (302) to <GET http://www.domain.com/Site_Abuse/DeadEnd.htm> from <GET http://domain.com/wps/showmodel.asp?Type=15&make=damc&a=664&b=51&c=0>

我想将请求发送到GET网址,而不是被重定向。现在我找到了这个中间件:

https://github.com/scrapy/scrapy/blob/master/scrapy/contrib/downloadermiddleware/redirect.py#L31

我将此重定向代码添加到了middleware.py文件中,并将其添加到settings.py中:

DOWNLOADER_MIDDLEWARES = {
 'street.middlewares.RandomUserAgentMiddleware': 400,
 'street.middlewares.RedirectMiddleware': 100,
 'scrapy.contrib.downloadermiddleware.useragent.UserAgentMiddleware': None,
}

但是我仍然被重定向。为了使该中间件正常工作,这是我要做的吗?


阅读 1767

收藏
2020-04-08

共1个答案

小编典典

在这种情况下,忘记了中间件,就可以解决问题:

meta = {'dont_redirect': True,'handle_httpstatus_list': [302]}

也就是说,在产生请求时,你将需要包含meta参数:

yield Request(item['link'],meta = {
                  'dont_redirect': True,
                  'handle_httpstatus_list': [302]
              }, callback=self.your_callback)
2020-04-08