zoukankan      html  css  js  c++  java
  • 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直接搜索

           

  • 相关阅读:
    NodeJS旅程 : module 不可忽略的重点
    NodeJS旅程 : Less
    NodeJS旅程 : express
    新的旅程:NodeJS
    活用命令模式
    20145226《信息安全系统设计基础》第0周学习总结
    20145226夏艺华 《Java程序设计》第1周学习总结
    学习 MySQL-DBA常用SQL汇总
    关于旗舰店直通车的由来
    学习 Mysql
  • 原文地址:https://www.cnblogs.com/2bjiujiu/p/7368002.html
Copyright © 2011-2022 走看看