irpas技术客

scrapy 爬虫中间件调动不了,解决方案_范之度

irpas 5611

? ? ? ? ? ?在scrapy模拟登陆中,发现浏览器请求头怎么都添加不了,然后开始分析问题。

? ? ? ? ? ?首先是在下载中间件中的?def process_response(self, request, response, spider):中添加请求头,结果没有添加成功。

request.meta['proxy'] = 'http://'+c request.meta['User_Agent'] = random.choice(user_agent)

? ? ? ? ? ?结果没有运行。

? ? ? ? ? ?通过查资料分析有6点需要注意如下:

? ? ? ? ? ? ? ? ? (1)在setting中设置(这种不好归类,知识比较分散。)

? ? ? ? ? ? ? ? ? (2)用process_start_requests,以Spider启动的request为参数调用。(因为网上有说process_response不能用,可以在start_requests来改。)

? ? ? ? ? ? ? ? ? (3)在setting中的DOWNLOADER_MIDDLEWARES中设置'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': None,把默认禁掉。

? ? ? ? ? ? ? ? ? (4)测试网站https://httpbin.org/get?show_env=1

? ? ? ? ? ? ? ? ? (5)cookies使用request.cookies来设置很容易出bug,最好的是用request来重新提交一下。

? ? ? ? ? ?重新以process_start_requests来设置user_agent发现成功了,这里需要注意的是千万要区分爬虫中间件和下载中间件,process_response是在下载中间件中使用的,process_start_requests是在爬虫中间件中使用的,因此在setting文件中SPIDER_MIDDLEWARES,激活middlewares。

在middlewares.py中

class Demo1SpiderMiddleware: @classmethod def from_crawler(cls, crawler): # This method is used by Scrapy to create your spiders. s = cls() crawler.signals.connect(s.spider_opened, signal=signals.spider_opened) return s def process_spider_input(self, response, spider): return None def process_spider_output(self, response, result, spider): for i in result: yield i def process_spider_exception(self, response, exception, spider): pass def process_start_requests(self, start_requests, spider): for request in start_requests: request.headers['User-Agent']="Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1467.0 Safari/537.36" #print(HeaderMethod.get_headers()) print("开始实验了") yield request def spider_opened(self, spider): spider.logger.info('Spider opened: %s' % spider.name)

在setting中

SPIDER_MIDDLEWARES = { 'Demo1.middlewares.Demo1SpiderMiddleware': 499, }

这里一定要注意的是爬虫中间件和下载中间件是不同的。参考网址:https://·/xieqiankun/p/know_middleware_of_scrapy_1.html


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #Scrapy #爬虫中间件调动不了 #解决方案