本文转载自如下网站: Scrapy 中设置随机 User-Agent 的方法汇总 https://www.makcyun.top/web_scraping_withpython14.htmlhtml
一行代码搞定 Scrapy 中的随机 UA 设置。python
摘要:爬虫过程当中的反爬措施很是重要,其中设置随机 User-Agent 是一项重要的反爬措施,Scrapy 中设置随机 UA 的方式有不少种,有的复杂有的简单,本文就对这些方法进行汇总,提供一种只须要一行代码的设置方式。web
最近使用 Scrapy 爬一个网站,遇到了网站反爬的状况,因而开始搜索一些反爬措施,了解到设置随机 UA 来假装请求头是一种经常使用的方式,这可以作到必定程度上避免网站直接识别出你是一个爬虫从而封掉你。设置随机 UA 的方法有挺多种,有的须要好多行代码,有的却只须要一行代码就搞定了,接下来就来介绍下。chrome
首先,说一下常规状况不使用 Scrapy 时的用法,比较方便的方法是利用 fake_useragent
包,这个包内置大量的 UA 能够随机替换,这比本身去搜集罗列要方便不少,下面来看一下如何操做。api
首先,安装好fake_useragent
包,一行代码搞定:浏览器
pip install fake-useragent |
而后,就能够测试了:dom
from fake_useragent import UserAgent |
这里,使用了 ua.random 方法,能够随机生成各类浏览器的 UA,见下图:scrapy
若是只想要某一个浏览器的,好比 Chrome ,那能够改为 ua.chrome
,再次生成随机 UA 查看一下:ide
以上就是常规设置随机 UA 的一种方法,很是方便。测试
下面,咱们来介绍在 Scrapy 中设置随机 UA 的几种方法。
先新建一个 Project,命名为 wanojia
,测试的网站选择为:http://httpbin.org/get
。
首先,咱们来看一下,若是不添加 UA 会获得什么结果,能够看到显示了scrapy
,这样就暴露了咱们的爬虫,很容易被封。
下面,咱们添加上 UA 。
第一种方法是和上面程序同样,直接在主程序中设置 UA,而后运行程序,经过下面这句命令能够输出该网站的 UA,见上图箭头处所示,每次请求都会随机生成 UA,这种方法比较简单,可是每一个 requests 下的请求都须要设置,不是很方便,既然使用了 Scrapy,它提供了专门设置 UA 的地方,因此接下来咱们看一下如何单独设置 UA。
response.request.headers['User-Agent'] |
第二种方法,是在 settings.py 文件中手动添加一些 UA,而后经过 random.choise
方法随机调用,便可生成 UA,这种方便比较麻烦的就是须要本身去找 UA,并且增长了代码行数量。
第三种方法,是使用 fake-useragent 包,在 middlewares.py 中间件中改写 process_request() 方法,添加如下几行代码便可。
from fake_useragent import UserAgent |
而后,咱们回到 settings.py
文件中调用自定义的 UserAgent,注意这里要先关闭默认的 UA 设置方法才行。
DOWNLOADER_MIDDLEWARES = { |
能够看到,咱们成功获得了随机 UA。
能够看到,上面几种方法其实都不太方便,代码量也比较多,有没有更简单的设置方法呢?
有的,只须要一行代码就搞定,利用一款名为 scrapy-fake-useragent
的包。
先贴一下该包的官方网址:https://pypi.org/project/scrapy-fake-useragent/,使用方法很是简单,安装好而后使用就好了。
执行下面的命令进行安装,而后在 settings.py 中启用随机 UA 设置命令就能够了,很是简单省事。
pip install scrapy-fake-useragent |
DOWNLOADER_MIDDLEWARES = { |
咱们输出一下 UA 和网页 Response,能够看到成功输出告终果。
以上就是 Scrapy 中设置随机 UA 的几种方法,推荐最后一种方法,即安装 scrapy-fake-useragent
库,而后在 settings 中添加下面这一行代码便可:
'scrapy_fake_useragent.middleware.RandomUserAgentMiddleware': 400, |
另外,反爬措施除了设置随机 UA 之外,还有一种很是重要的措施是设置随机 IP,咱们后续再进行介绍。