请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

downloadmiddleware随机更换user-agent不能调用process_request

老师您好,在用downloadmiddleware随机更换user-agent时我定义了函数RandomUserAgentMiddlware,并在settings文件中配置了,但是调试时程序只执行了__init__函数,没有调用process_request函数,不知道是什么原因

class RandomUserAgentMiddlware(object):
    #随机更换user-agent
    def __init__(self, crawler):
        super(RandomUserAgentMiddlware, self).__init__()
        self.ua = UserAgent()
        self.ua_type = crawler.settings.get("RANDOM_UA_TYPE", "random")

    @classmethod
    def from_crawler(cls, crawler):
        return cls(crawler)

    def process_request(self, request, spider):
        def get_ua():
            return getattr(self.ua, self.ua_type)

        request.headers.setdefault('User-Agent', get_ua())
        
SPIDER_MIDDLEWARES = {
    'MyArticleSpider.middlewares.RandomUserAgentMiddlware': 1,
    'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': None, #需要取消
}


正在回答 回答被采纳积分+3

1回答

提问者 qq_雨过天晴_2 2017-07-31 15:13:40

找到错误了,SPIDER_MIDDLEWARES配置错了,应该配置DOWNLOADER_MIDDLEWARES

0 回复 有任何疑惑可以回复我~
  • bobby #1
    好的,
    回复 有任何疑惑可以回复我~ 2017-08-01 09:34:04
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信