今天跟大家聊聊如何用代码处理Scrapy随机的User-Agent,可能很多人都不太懂。为了让大家更好的了解,边肖为大家总结了以下内容,希望大家能从这篇文章中有所收获。
摘要:爬行过程中的防爬措施非常重要,其中设置随机用户代理是一项重要的防爬措施。在Scrapy中设置随机UA的方法有很多,有复杂的,也有简单的。本文总结了这些方法,并提供了一种只需要一行代码的设置方式。
最近在用Scrapy爬一个网站的时候,遇到了网站反爬的情况,于是开始搜索一些反爬的措施,了解到设置随机UA来伪装请求头是一种常见的方式,可以防止网站直接把你识别为爬虫,在一定程度上屏蔽你。设置随机UA的方法有很多,有些需要很多行代码,有些只需要一行代码就可以完成。接下来介绍一下。
00-1010首先来说说正常情况下不使用Scrapy时的用法。更方便的方法是使用fake_useragent包,里面内置了大量的UA,可以随机替换。这比自己收集上市方便多了。我们来看看如何操作。
首先,安装fake_useragent包,并获取一行代码:
1 1pipinstallfake-useragent然后,您可以测试:
1 from fake _ user agentimportuser agent
2ua=UserAgent()
3 foriirange(10):
4print(ua.random)这里使用ua.random方法随机生成各种浏览器的ua,如下图所示:
(放大)
如果你只想要一个浏览器,比如Chrome,你可以把它改成ua.chrome,再生成一个随机的ua来签出:
以上是常规设置随机UA的方法,非常方便。
接下来介绍几种在Scrapy中设置随机UA的方法。
首先,创建一个名为wanojia的新项目,测试的网站是http://httpbin.org/get.
首先,我们来看看如果不添加UA会发生什么。我们可以看到显示的是scrapy,暴露了我们的爬虫,很容易被屏蔽。
接下来,我们添加UA。
常规设置 UA
第一种方法是直接在主程序中设置UA,然后运行程序。这个网站的UA可以通过下面的命令输出,如上图箭头所示。每个请求将随机生成UA。这个方法比较简单,但是每个请求下的请求都需要设置,不太方便。既然使用了Scrapy,就提供了一个专门设置UA的地方,那么我们来看看如何单独设置UA。
1响应.请求.标头['用户代理']
直接设置 UA
第二种方法是在settings.py文件中。
手动添加一些 UA,然后通过 random.choise
方法随机调用,即可生成 UA,这种方便比较麻烦的就是需要自己去找 UA,而且增加了代码行数量。
▌middlewares.py 中设置 UA
第三种方法,是使用 fake-useragent 包,在 middlewares.py 中间件中改写 process_request() 方法,添加以下几行代码即可。
1from fake_useragent import UserAgent
2class RandomUserAgent(object):
3 def process_request(self, request, spider):
4 ua = UserAgent()
5 request.headers['User-Agent'] = ua.random
然后,我们回到 settings.py
文件中调用自定义的 UserAgent,注意这里要先关闭默认的 UA 设置方法才行。
1DOWNLOADER_MIDDLEWARES = {
2 'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': None,
3 'wandoujia.middlewares.RandomUserAgent': 543,
4}
可以看到,我们成功得到了随机 UA。
▌一行代码设置 UA
可以看到,上面几种方法其实都不太方便,代码量也比较多,有没有更简单的设置方法呢?
有的,只需要一行代码就搞定,利用一款名为 scrapy-fake-useragent
的包。
先贴一下该包的官方网址:https://pypi.org/project/scrapy-fake-useragent/,使用方法非常简单,安装好然后使用就行了。
执行下面的命令进行安装,然后在 settings.py 中启用随机 UA 设置命令就可以了,非常简单省事。
1pip install scrapy-fake-useragent
1DOWNLOADER_MIDDLEWARES = {
2 'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': None, # 关闭默认方法
3 'scrapy_fake_useragent.middleware.RandomUserAgentMiddleware': 400, # 开启
4}
我们输出一下 UA 和网页 Response,可以看到成功输出了结果。
以上就是 Scrapy 中设置随机 UA 的几种方法,推荐最后一种方法,即安装 scrapy-fake-useragent
库,然后在 settings 中添加下面这一行代码即可:
1'scrapy_fake_useragent.middleware.RandomUserAgentMiddleware': 400,
另外,反爬措施除了设置随机 UA 以外,还有一种非常重要的措施是设置随机 IP。
看完上述内容,你们对怎么用代码搞定Scrapy随机 User-Agent有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/133804.html