scrapy_随机user-agent

Posted 北门吹雪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了scrapy_随机user-agent相关的知识,希望对你有一定的参考价值。

什么是user-agent?

  用户代理,服务器识别用户的操作系统,浏览器类型和渲染引擎,不同浏览器的user-agent是不同的

如何随机更改user-agent?

    1. 在setting中添加user-agent列表

# setting:
# 随机更换user-agent
# USER_AGENT_LIST = [\'zspider/0.9-dev http://feedback.redkolibri.com/\',
#                     \'Xaldon_WebSpider/2.0.b1\',
#                     \'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) Speedy Spider (http://www.entireweb.com/about/search_tech/speedy_spider/)\',
#                     \'Mozilla/5.0 (compatible; Speedy Spider; http://www.entireweb.com/about/search_tech/speedy_spider/)\',
#                     \'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0) AddSugarSpiderBot www.idealobserver.com\',
#                    ]

    2. 在download_middleware中导入user-agent列表,每次列表中取得一个值

__author__ = \'beimenchuixue\'
__blog__ = \'http://www.cnblogs.com/2bjiujiu/\'

from random import choice

class RandomUserAgentMiddleware(object):
    
    def __init__(self, agent_list):
        super(RandomUserAgentMiddleware, self).__init__()
        self.agent_list = agent_list
        
        
    @classmethod
    def from_crawler(cls, crawler):
        # 获取USER_AGENT_LIST列表
        o = crawler.settings[\'USER_AGENT_LIST\']
        return cls(o)
        
    def process_request(self, request, spider):
        if self.agent_list:
            # 随机取得一个值
            random_user_agent = choice(self.agent_list)
            # 设置User-Agent值
            request.headers.setdefault(b\'User-Agent\', random_user_agent)

    3. setting中注册download_middleware,把原生的置为None

DOWNLOADER_MIDDLEWARES = {
    \'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware\': None,
    \'JobBole.middlewares.RandomUserAgentMiddleware\': 400,
    
}

 

download_middleware类有什么用?

       他是介于request和response中的钩子框架,用来全局修改request和response

还有哪些更改随机user-agent方法?

       scrapy-fake-useragent    -- Githup直接搜索

       

以上是关于scrapy_随机user-agent的主要内容,如果未能解决你的问题,请参考以下文章

Scrapy 设置随机 User-Agent

Python3爬虫Scrapy使用IP代理池和随机User-Agent

第三百四十七节,Python分布式爬虫打造搜索引擎Scrapy精讲—通过downloadmiddleware随机更换user-agent浏览器用户代理

Python爬虫从入门到放弃(二十三)之 Scrapy的中间件Downloader Middleware实现User-Agent随机切换

scrapy设置随机请求头的两种方法

爬虫进阶Scrapy框架-中间件的使用