爬虫过程中的反爬措施非常重要,其中设置随机 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相关推荐

  1. scrapy爬取动态网页_scrapy_splash 设置随机请求头

    本文为 霾大:scrapy_splash 爬取 js 加载网页初体验​zhuanlan.zhihu.com 的补充 在上面的文章中我们仅仅是初步完成了 scrapy_splash 的简单使用 接下来我 ...

  2. scrapy 动态IP、随机UA、验证码

    随机UA https://github.com/hellysmile/fake-useragent DOWNLOADER_MIDDLEWARES增加自定义 from fake_useragent im ...

  3. python爬虫添加随机UA

    什么是UA:User Agent是一种浏览器的标识,爬虫除非是访问网站或APP专用数据api接口,正常的HTTP请求都需要进行ua(User-Agent)优化,因为ua是浏览器标识,如果http请求没 ...

  4. ajax后台返回数据中文乱码_解决Jmeter返回值显示中文乱码 的三种方法及设置随机动态参数(非原创侵删)...

    一.Jmeter返回值显示中文乱码解决方法 第一种解决方法: 1. 点击线程组--添加--后置处理器--BeanShell后置处理程序 2.点击BeanShell后置处理程序,编写:prev.setD ...

  5. Pytorch(6)-设置随机种子,复现模型结果

    设置随机种子,复现模型结果 1.Python本身的随机因素 2.numpy随机因素 3.pytorch随机因素 在很多情况下,我们希望能够复现实验的结果.为了消除程序中随机因素的影响,我们需要将随机数 ...

  6. python循环10次_开发一个循环 5 次计算的小游戏, 设置随机种子为10,每次随机产生两个 1~10的数字以及随机选择...

    开发一个循环 5 次计算的小游戏, 设置随机种子为10,每次随机产生两个 1~10的数字以及随机选择 "+.-.*"运算符,构成一个表达式, 让用户计算式子结果并输入结果,如果计算 ...

  7. 设置随机种子之后,网络训练结果仍然不同的解决方法(针对随机采样的数据集)torch设置随机种子,num_worker对数据采样的影响。

    网络训练结果无法复现 设置随机种子 应该为torch, numpy,以及Python设置随机种子,并提高torch卷积精度. def set_seed(seed):random.seed(seed)n ...

  8. Pytorch为什么总要设置随机种子

    Pytorch为什么总要设置随机种子 在pytorch中总能看到以 第一行有个设置随机种子的函数?它到底有啥作用? def set_seed(seed=1):random.seed(seed)np.r ...

  9. python随机种子怎么用_python设置随机种子实例讲解

    python设置随机种子实例讲解 对于原生的random模块 import random random.seed(1) 如果不设置,则python根据系统时间自己定一个. 也可以自己根据时间定一个随机 ...

最新文章

  1. android中的定时任务一般有两种机制,android 定时任务
  2. 快速入门cocos2d-x jsbinding
  3. centos7安装、卸载docker (yum方式)
  4. rip协议中周期性广播路由信息的报文_距离矢量路由协议(RIP)
  5. \sdk\include\wspiapi.h(47) : error C2265: 'Unknown' : reference to a zero-sized array is illegal 解
  6. Linux 的发展历史,设计哲学和一些常用的术语介绍
  7. Not So Simple Polygon Embedding CodeForces - 1354C2(计算几何)
  8. 安卓手机系统可删除的自带软件大集合
  9. mysql 两字段相乘_sql统计2列相乘和语句.doc
  10. OGG ORA-1403 NO DATA FOUND
  11. Pytorch相关函数详解
  12. (Note)欧空局多光谱卫星Sentinel-2
  13. java 104规约_IEC104规约,Java开发主站程序
  14. 六十星系之25廉贞天相坐子午
  15. 关于五笔字型学习五笔难拆汉字学习总结
  16. 《程序员修炼之道:从小工到专家》The Pragmatic Programmer: From Journeymen to Master
  17. FigDraw 22. SCI文章中绘图之核密度及山峦图 (ggridges)
  18. 京东2020校招笔试题-算法工程师
  19. 【CSS】886- 你该知道的字体 font-family
  20. 易拉宝Roll up Banner

热门文章

  1. logback日志记录器讲解
  2. C语言创建指针需要给大小吗,如何用c语言创建一个指针(示例代码)
  3. vba数组下标越界_VBA编程知识点(7)——数组基本知识
  4. dubbo provider异步_dubbo九连问你知道多少?
  5. linux内存占用过高原因
  6. 算法笔记_029:约瑟夫斯问题(Java)
  7. nodeJS下利用mongdb进行数据库操作
  8. c# WinForm开发 DataGridView控件的各种操作总结(单元格操作,属性设置)
  9. JAVA的23种设计模式
  10. ASP.NET MVC 环境配置,从1.0到2.0的转换和学习资源等