介绍
- 简介:
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())