我在抓取网站时收到来自服务器的 302 响应:
2014-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 url 而不是被重定向。现在我找到了这个中间件:
https://github.com/scrapy/scrapy/blob/master/scrapy/contrib/downloadermiddleware/redirect.py#L31 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,
}
但我仍然被重定向。为了让这个中间件正常工作,我要做的就是这些吗?我错过了什么吗?
在这种情况下忘记中间件,这可以解决问题:
meta = {'dont_redirect': True,'handle_httpstatus_list': [302]}
也就是说,当您发出请求时,您需要包含元参数:
yield Request(item['link'],meta = {
'dont_redirect': True,
'handle_httpstatus_list': [302]
}, callback=self.your_callback)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)