在编写爬虫进行网页数据的时候,大多数情况下,需要在请求是增加请求头,下面介绍一个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)

fake-useragent,python爬虫伪装请求头的更多相关文章

  1. python爬虫添加请求头和请求主体

    添加头部信息有两种方法 1.通过添加urllib.request.Request中的headers参数 #先把要用到的信息放到一个字典中 headers = {} headers['User-Agen ...

  2. python爬虫添加请求头

    request import requests headers = { # 'Accept': 'application/json, text/javascript, */*; q=0.01', # ...

  3. Python:fake-useragent 伪装请求头

    写爬虫的时候,在进行 request 请求的时候,多数情况下需要添加请求头,否则就不能正常请求. 添加请求头最常用的做法是修改 User-Agent 来伪装浏览器. 以前在写请求头的时候,都是通过 c ...

  4. python爬虫#网络请求requests库

    中文文档 http://docs.python-requests.org/zh_CN/latest/user/quickstart.html requests库 虽然Python的标准库中 urlli ...

  5. python 爬虫001-http请求过程

    HTTP 请求流程 一次完整的HTTP请求过程从TCP三次握手建立连接成功后开始,客户端按照指定的格式开始向服务端发送HTTP请求,服务端接收请求后,解析HTTP请求,处理完业务逻辑,最后返回一个HT ...

  6. python爬虫伪装技术应用

    版权声明:本文为博主原创文章,转载 请注明出处: https://blog.csdn.net/sc2079/article/details/82423865 -写在前面 本篇博客主要是爬虫伪装技术的应 ...

  7. Python爬虫requests请求库

    requests:pip install  request 安装 实例: import requestsurl = 'http://www.baidu.com'response = requests. ...

  8. python 爬虫 伪装

    #coding=utf-8 import requests def requests_view(response): import webbrowser requests_url = response ...

  9. python爬虫之反爬虫(随机user-agent,获取代理ip,检测代理ip可用性)

    python爬虫之反爬虫(随机user-agent,获取代理ip,检测代理ip可用性) 目录 随机User-Agent 获取代理ip 检测代理ip可用性 随机User-Agent fake_usera ...

随机推荐

  1. bundle安装方法

    sudo chmod +x filename.bundle sudo ./filename .bundle 原文链接:http://www.chinastor.com/a/linux/ubuntu/0 ...

  2. BestCoder Round #12 War(计算几何)

    War Time Limit: 8000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  3. oracle中恢复删除的表

    1.表恢复,如果在删除表的同时删除的数据,那么表恢复也能恢复当时删除时的数据 -----查询删除的表 select * from recyclebin order by droptime desc - ...

  4. Linux JAVA 配置

    wget http://download.oracle.com/otn-pub/java/jdk/7u25-b15/jdk-7u25-linux-x64.tar.gz tar zxvf jdk-7u2 ...

  5. VS工程目录下的ipch文件夹和.sdf文件

    Visual Studio 2010工程目录下的ipch文件夹和.sdf文件 - web8 - 博客园http://www.cnblogs.com/web100/archive/2012/12/21/ ...

  6. MFC 单选按钮Radio使用注意

    使用MFC Radio时遇到问题:数据交换时出现断言崩溃框 定位于: 解决方法: 1.按CTRL+D,保证同一组内的radio的tab序号是连续的: 2.同一组内,设置 radio1的属性:  gro ...

  7. sql语句优化 (转)

    性能不理想的系统中除了一部分是因为应用程序的负载确实超过了服务器的实际处理能力外,更多的是因为系统存在大量的SQL语句需要优化. 为了获得稳定的执行性能,SQL语句越简单越好.对复杂的SQL语句,要设 ...

  8. Qt计算两个时间差

    QTime startTime = QTime::currentTime(); QThread::msleep(SLEEP_TIME_MILL); QTime stopTime = QTime::cu ...

  9. Linux下的高级拾色器—Pick

    导读 虽然大多数设计师都在使用 Mac,但也有一少部分在使用 Windows 甚至是 Linux 系统.在 Mac 和 Windows 中都有非常丰富的拾色器工具或插件可用,反而在开源界中这类颜色选择 ...

  10. JAVAWEB基础模块开发顺序与数据访问对象实现类步骤

    一.模块的开发的顺序 1. 定义数据表 2. 新建模型类 3. 新建"add.jsp" 4. 实现AddServlet中的doGet()方法 5. 定义Dao.Service接口 ...