zoukankan      html  css  js  c++  java
  • fake-useragent,python爬虫伪装请求头

    在编写爬虫进行网页数据的时候,大多数情况下,需要在请求是增加请求头,下面介绍一个python下非常好用的伪装请求头的库:fake-useragent,具体使用说明如下:

    1.在scrapy中的使用

    第一步

    pip install fake-useragent

    第二步:在middlewares中配置下载中间件。

    class RandomUserAgentMiddleware(object):
        #随机更换user_agent
        def __init__(self, crawler):
            super(RandomUserAgentMiddleware,self).__init__()
            self.ua = UserAgent()
            self.ua_type = crawler.settings.get("RANDOM_UA_TYPE","random")#为了随机获得浏览器类型
     
        @classmethod
        def from_crawler(cls, crawler):
            return cls(crawler)#导入crawler,从而获取其他的配置文件里的数据
     
        def process_request(self,request,spider):
            def get_ua():
                return getattr(self.ua,self.ua_type)#获取ua的ua_type属性,也就是获得random
     
            request.headers.setdefault('User-Agent',get_ua())

    第三步:在settings中配置

    RANDOM_UA_TYPE = "random"
    USER_AGENT ='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36'
    DEFAULT_REQUEST_HEADERS = {
         'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
        'Accept-Language': 'en',
         'User-Agent':USER_AGENT,
    }

    2不是在scrapy中的使用

    pip install fake-useragent

    获取各浏览器的fake-useragent

    from fake_useragent import UserAgent
    ua = UserAgent()
    #ie浏览器的user agent
    print(ua.ie)
    
    #opera浏览器
    print(ua.opera)
    
    #chrome浏览器
    print(ua.chrome)
    
    #firefox浏览器
    print(ua.firefox)
    
    #safri浏览器
    print(ua.safari)
    
    #最常用的方式
    #写爬虫最实用的是可以随意变换headers,一定要有随机性。支持随机生成请求头
    print(ua.random)
    print(ua.random)
    print(ua.random)

    示例代码

    from fake_useragent import UserAgent
    import requests
    ua=UserAgent()
    #请求的网址
    url="https://www.baidu.com"
    #请求头
    headers={"User-Agent":ua.random}
    #请求网址
    response=requests.get(url=url,headers=headers)
    #响应体内容
    print(response.text)
    #响应状态信息
    print(response.status_code)
    #响应头信息
    print(response.headers)

     

  • 相关阅读:
    实验四 决策树算法及应用
    实验三 朴素贝叶斯算法及应用
    实验二 K-近邻算法及应用
    实验一 感知器及其应用
    园区网核心、防火墙、边界出口冗余实验配置
    PNETLab模拟器部署及使用配置
    基于RPS开发模式的可视化设计解决方案
    Python学习手册《Learning Python》
    【转】Windows 64bit下Python环境配置与集成IDE PyCharm
    时间复杂度完美例子---数组最大子序列和
  • 原文地址:https://www.cnblogs.com/zlel/p/10112132.html
Copyright © 2011-2022 走看看