介绍


  • 简介:

UserAgent是识别浏览器的一串字符串,相当于浏览器的身份证,在利用爬虫爬取网站数据时,频繁更换UserAgent可以避免触发相应的反爬机制。fake-useragent对频繁更换UserAgent提供了很好的支持,可谓防反扒利器。

  • 安装:
pip install fake-useragent

简单使用


  • 生成随机请求头

>>> from fake_useragent import UserAgent
>>> UserAgent().random
'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.17 Safari/537.36'
  • 指定浏览器的请求头
>>> UserAgent().ie
'Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 5.1; SLCC1; .NET CLR 1.1.4322)'
>>> UserAgent().firefox
'Mozilla/5.0 (Windows NT 6.1; rv:27.3) Gecko/20130101 Firefox/27.3'
>>> UserAgent().chrome
'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36'

应用于scrapy项目中


  • settings里面的配置
DOWNLOADER_MIDDLEWARES = {
        'bishe.middlewares.RandomUserAgentMiddleware':127
}
RANDOM_UA_TYPE = "random"   #或者指定浏览器 firefox、chrome...
  • 下载中间键编写
from fake_useragent import UserAgent
class RandomUserAgentMiddleware(object):
    '''随机更换user-agent,基本上都是固定格式和scrapy源码中useragetn.py中UserAgentMiddleware类中一致'''
    def __init__(self, crawler):

        self.ua = UserAgent()
        # 从配置文件settings中读取RANDOM_UA_TYPE值,默认为random,可以在settings中自定义
        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())

 

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐