scrapy 设置随机UA
爬虫过程中的反爬措施非常重要,其中设置随机 User-Agent 是一项重要的反爬措施,Scrapy 中设置随机 UA 的方式有很多种,有的复杂有的简单。
1.常规设置 UA
首先,说一下常规情况不使用 Scrapy 时的用法,比较方便的方法是利用 fake_useragent包,这个包内置大量的 UA 可以随机替换,这比自己去搜集罗列要方便很多,下面来看一下如何操作。
首先,安装好fake_useragent包,一行代码搞定:
pip install fake-useragent
然后,就可以测试了:
from fake_useragent import UserAgentua = UserAgent()for i in range(10):print(ua.random)
2.middlewares.py 中设置 UA(推荐使用,质量高)
这种方法是在 settings.py 文件中手动添加一些 UA,然后通过 random.choise 方法随机调用,即可生成 UA,这种方便比较麻烦的就是需要自己去找 UA,而且增加了代码行数量。
代码如下:
from scrapy.downloadermiddlewares.useragent import UserAgentMiddleware
import randomclass RandomUserAgentMiddleware(UserAgentMiddleware):"""自动随机更换UA"""def __init__(self, user_agent_list):super(RandomUserAgentMiddleware, self).__init__()self.user_agent_list = user_agent_list@classmethoddef from_crawler(cls, crawler):return cls(user_agent_list=crawler.settings.get('USER_AGENT'))def process_request(self, request, spider):random_user_agent = random.choice(self.user_agent_list)request.headers.setdefault('User-Agent', random_user_agent)
然后,我们回到 settings.py 文件中调用自定义的 UserAgent,注意这里要先关闭默认的 UA 设置方法才行。
DOWNLOADER_MIDDLEWARES = {'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': None,'pachong.middlewares.common_download_middlewares.RandomUserAgentMiddleware': 450,# 'pachong.middlewares.common_download_middlewares.ProxyMiddleware': 700
}
scrapy 设置随机UA相关推荐
- scrapy爬取动态网页_scrapy_splash 设置随机请求头
本文为 霾大:scrapy_splash 爬取 js 加载网页初体验zhuanlan.zhihu.com 的补充 在上面的文章中我们仅仅是初步完成了 scrapy_splash 的简单使用 接下来我 ...
- scrapy 动态IP、随机UA、验证码
随机UA https://github.com/hellysmile/fake-useragent DOWNLOADER_MIDDLEWARES增加自定义 from fake_useragent im ...
- python爬虫添加随机UA
什么是UA:User Agent是一种浏览器的标识,爬虫除非是访问网站或APP专用数据api接口,正常的HTTP请求都需要进行ua(User-Agent)优化,因为ua是浏览器标识,如果http请求没 ...
- ajax后台返回数据中文乱码_解决Jmeter返回值显示中文乱码 的三种方法及设置随机动态参数(非原创侵删)...
一.Jmeter返回值显示中文乱码解决方法 第一种解决方法: 1. 点击线程组--添加--后置处理器--BeanShell后置处理程序 2.点击BeanShell后置处理程序,编写:prev.setD ...
- Pytorch(6)-设置随机种子,复现模型结果
设置随机种子,复现模型结果 1.Python本身的随机因素 2.numpy随机因素 3.pytorch随机因素 在很多情况下,我们希望能够复现实验的结果.为了消除程序中随机因素的影响,我们需要将随机数 ...
- python循环10次_开发一个循环 5 次计算的小游戏, 设置随机种子为10,每次随机产生两个 1~10的数字以及随机选择...
开发一个循环 5 次计算的小游戏, 设置随机种子为10,每次随机产生两个 1~10的数字以及随机选择 "+.-.*"运算符,构成一个表达式, 让用户计算式子结果并输入结果,如果计算 ...
- 设置随机种子之后,网络训练结果仍然不同的解决方法(针对随机采样的数据集)torch设置随机种子,num_worker对数据采样的影响。
网络训练结果无法复现 设置随机种子 应该为torch, numpy,以及Python设置随机种子,并提高torch卷积精度. def set_seed(seed):random.seed(seed)n ...
- Pytorch为什么总要设置随机种子
Pytorch为什么总要设置随机种子 在pytorch中总能看到以 第一行有个设置随机种子的函数?它到底有啥作用? def set_seed(seed=1):random.seed(seed)np.r ...
- python随机种子怎么用_python设置随机种子实例讲解
python设置随机种子实例讲解 对于原生的random模块 import random random.seed(1) 如果不设置,则python根据系统时间自己定一个. 也可以自己根据时间定一个随机 ...
最新文章
- android中的定时任务一般有两种机制,android 定时任务
- 快速入门cocos2d-x jsbinding
- centos7安装、卸载docker (yum方式)
- rip协议中周期性广播路由信息的报文_距离矢量路由协议(RIP)
- \sdk\include\wspiapi.h(47) : error C2265: 'Unknown' : reference to a zero-sized array is illegal 解
- Linux 的发展历史,设计哲学和一些常用的术语介绍
- Not So Simple Polygon Embedding CodeForces - 1354C2(计算几何)
- 安卓手机系统可删除的自带软件大集合
- mysql 两字段相乘_sql统计2列相乘和语句.doc
- OGG ORA-1403 NO DATA FOUND
- Pytorch相关函数详解
- (Note)欧空局多光谱卫星Sentinel-2
- java 104规约_IEC104规约,Java开发主站程序
- 六十星系之25廉贞天相坐子午
- 关于五笔字型学习五笔难拆汉字学习总结
- 《程序员修炼之道:从小工到专家》The Pragmatic Programmer: From Journeymen to Master
- FigDraw 22. SCI文章中绘图之核密度及山峦图 (ggridges)
- 京东2020校招笔试题-算法工程师
- 【CSS】886- 你该知道的字体 font-family
- 易拉宝Roll up Banner
热门文章
- logback日志记录器讲解
- C语言创建指针需要给大小吗,如何用c语言创建一个指针(示例代码)
- vba数组下标越界_VBA编程知识点(7)——数组基本知识
- dubbo provider异步_dubbo九连问你知道多少?
- linux内存占用过高原因
- 算法笔记_029:约瑟夫斯问题(Java)
- nodeJS下利用mongdb进行数据库操作
- c# WinForm开发 DataGridView控件的各种操作总结(单元格操作,属性设置)
- JAVA的23种设计模式
- ASP.NET MVC 环境配置,从1.0到2.0的转换和学习资源等