Scrapy 中设置随机 User-Agent 的方法汇总

栏目: Python · 发布时间: 5年前

内容简介:一行代码搞定 Scrapy 中的随机 UA 设置。摘要:爬虫过程中的反爬措施非常重要,其中设置随机 User-Agent 是一项重要的反爬措施,Scrapy 中设置随机 UA 的方式有很多种,有的复杂有的简单,本文就对这些方法进行汇总,提供一种只需要一行代码的设置方式。最近使用 Scrapy 爬一个网站,遇到了网站反爬的情况,于是开始搜索一些反爬措施,了解到设置随机 UA 来伪装请求头是一种常用的方式,这能够做到一定程度上避免网站直接识别出你是一个爬虫从而封掉你。设置随机 UA 的方法有挺多种,有的需要好

一行代码搞定 Scrapy 中的随机 UA 设置。

摘要:爬虫过程中的反爬措施非常重要,其中设置随机 User-Agent 是一项重要的反爬措施,Scrapy 中设置随机 UA 的方式有很多种,有的复杂有的简单,本文就对这些方法进行汇总,提供一种只需要一行代码的设置方式。

最近使用 Scrapy 爬一个网站,遇到了网站反爬的情况,于是开始搜索一些反爬措施,了解到设置随机 UA 来伪装请求头是一种常用的方式,这能够做到一定程度上避免网站直接识别出你是一个爬虫从而封掉你。设置随机 UA 的方法有挺多种,有的需要好多行代码,有的却只需要一行代码就搞定了,接下来就来介绍下。

▌常规设置 UA

首先,说一下常规情况不使用 Scrapy 时的用法,比较方便的方法是利用 fake_useragent 包,这个包内置大量的 UA 可以随机替换,这比自己去搜集罗列要方便很多,下面来看一下如何操作。

首先,安装好 fake_useragent 包,一行代码搞定:

pip install fake-useragent

然后,就可以测试了:

from fake_useragent import UserAgent
ua = UserAgent()
for i in range(10):
    print(ua.random)

这里,使用了 ua.random 方法,可以随机生成各种浏览器的 UA,见下图:

Scrapy 中设置随机 User-Agent 的方法汇总

如果只想要某一个浏览器的,比如 Chrome ,那可以改成 ua.chrome ,再次生成随机 UA 查看一下:

Scrapy 中设置随机 User-Agent 的方法汇总

以上就是常规设置随机 UA 的一种方法,非常方便。

下面,我们来介绍在 Scrapy 中设置随机 UA 的几种方法。

先新建一个 Project,命名为 wanojia ,测试的网站选择为: http://httpbin.org/get

首先,我们来看一下,如果不添加 UA 会得到什么结果,可以看到显示了 scrapy ,这样就暴露了我们的爬虫,很容易被封。

Scrapy 中设置随机 User-Agent 的方法汇总

下面,我们添加上 UA 。

▌直接设置 UA

Scrapy 中设置随机 User-Agent 的方法汇总

第一种方法是和上面程序一样,直接在主程序中设置 UA,然后运行程序,通过下面这句命令可以输出该网站的 UA,见上图箭头处所示,每次请求都会随机生成 UA,这种方法比较简单,但是每个 requests 下的请求都需要设置,不是很方便,既然使用了 Scrapy,它提供了专门设置 UA 的地方,所以接下来我们看一下如何单独设置 UA。

response.request.headers['User-Agent']

▌手动添加 UA

Scrapy 中设置随机 User-Agent 的方法汇总

第二种方法,是在 settings.py 文件中手动添加一些 UA,然后通过 random.choise 方法随机调用,即可生成 UA,这种方便比较麻烦的就是需要自己去找 UA,而且增加了代码行数量。

▌middlewares.py 中设置 UA

第三种方法,是使用 fake-useragent 包,在 middlewares.py 中间件中改写 process_request() 方法,添加以下几行代码即可。

from fake_useragent import UserAgent
class RandomUserAgent(object):
    def process_request(self, request, spider):
        ua = UserAgent()
        request.headers['User-Agent'] = ua.random

然后,我们回到 settings.py 文件中调用自定义的 UserAgent,注意这里要先关闭默认的 UA 设置方法才行。

DOWNLOADER_MIDDLEWARES = {
    'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': None, 
    'wandoujia.middlewares.RandomUserAgent': 543,
}

可以看到,我们成功得到了随机 UA。

Scrapy 中设置随机 User-Agent 的方法汇总

▌一行代码设置 UA

可以看到,上面几种方法其实都不太方便,代码量也比较多,有没有更简单的设置方法呢?

有的,只需要一行代码就搞定,利用一款名为 scrapy-fake-useragent 的包。

先贴一下该包的官方网址: https://pypi.org/project/scrapy-fake-useragent/ ,使用方法非常简单,安装好然后使用就行了。

执行下面的命令进行安装,然后在 settings.py 中启用随机 UA 设置命令就可以了,非常简单省事。

pip install scrapy-fake-useragent
DOWNLOADER_MIDDLEWARES = {
    'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': None, # 关闭默认方法
    'scrapy_fake_useragent.middleware.RandomUserAgentMiddleware': 400, # 开启
}

我们输出一下 UA 和网页 Response,可以看到成功输出了结果。

Scrapy 中设置随机 User-Agent 的方法汇总

以上就是 Scrapy 中设置随机 UA 的几种方法,推荐最后一种方法,即安装 scrapy-fake-useragent 库,然后在 settings 中添加下面这一行代码即可:

'scrapy_fake_useragent.middleware.RandomUserAgentMiddleware': 400,

另外,反爬措施除了设置随机 UA 以外,还有一种非常重要的措施是设置随机 IP,我们后续再进行介绍。

本文完。


以上所述就是小编给大家介绍的《Scrapy 中设置随机 User-Agent 的方法汇总》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

思想的未来

思想的未来

(美)劳伦斯﹒莱斯格 / 李旭 / 中信出版社 / 2004-10 / 29.00元

因特网革命已到来,一些人说它已经过去,革命缘何而来?又缘何而去呢? 劳伦斯·莱斯格对因特网革命中为何会出现一种反革命的破坏性力量及后果做出了解释。创作之所以繁荣,是因为因特网保护了创新的公共资源。是因为因特网保护了创新的公共资源。因特网的独特设计营造出一个中立的平台。最广大范围的作者们可在此平台上进行试验。围绕此平台的法律架构对这一自由空间给予了保护,以使文化和信息——我们这个时代的......一起来看看 《思想的未来》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

URL 编码/解码
URL 编码/解码

URL 编码/解码

html转js在线工具
html转js在线工具

html转js在线工具