今天就跟大家聊聊有关怎么用代码搞定Scrapy随机用户代理,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
<节><>强摘要:强>爬虫过程中的反爬措施非常重要,其中设置随机用户代理是一项重要的反爬措施,Scrapy中设置随机UA的方式有很多种,有的复杂有的简单,本文就对这些方法进行汇总,提供一种只需要一行代码的设置方式。
最近使用Scrapy爬一个网站,遇到了网站反爬的情况,于是开始搜索一些反爬措施,了解到设置随机UA来伪装请求头是一种常用的方式,这能够做到一定程度上避免网站直接识别出你是一个爬虫从而封掉你。设置随机UA的方法有挺多种,有的需要好多行代码,有的却只需要一行代码就搞定了,接下来就来介绍下。
▌常规设置UA
首先,说一下常规情况不使用Scrapy时的用法,比较方便的方法是利用<代码> fake_useragent> 代码包,这个包内置大量的UA可以随机替换,这比自己去搜集罗列要方便很多,下面来看一下如何操作。
首先,安装好<代码> fake_useragent> 代码包,一行代码搞定:
<代码类=皃ython语言python hljs”> 1 pip install fake-useragent
代码>
然后,就可以测试了:
<代码类=皃ython语言python hljs”> 1得到fake_useragent import UserAgent
2 ua =, UserAgent ()
3 for 小姐:拷贝范围(10):
4,,,,印刷(ua.random)
代码>
这里,使用了UA。随机的方法,可以随机生成各种浏览器的UA,见下图:
<人物> 图>(放大查看)
如果只想要某一个浏览器的,比如铬,那可以改成<代码> UA。铬> 代码,再次生成随机UA查看一下:
<人物> 图>以上就是常规设置随机UA的一种方法,非常方便。
下面,我们来介绍在Scrapy中设置随机UA的几种方法。
先新建一个项目,命名为<代码> wanojia> 代码,测试的网站选择为:http://httpbin.org/get <代码> 代码>。
首先,我们来看一下,如果不添加UA会得到什么结果,可以看到显示了<代码> Scrapy> 代码,这样就暴露了我们的爬虫,很容易被封。
<人物> 图>下面,我们添加上UA。
▌直接设置UA
<人物> 图>第一种方法是和上面程序一样,直接在主程序中设置UA,然后运行程序,通过下面这句命令可以输出该网站的UA,见上图箭头处所示,每次请求都会随机生成UA,这种方法比较简单,但是每个请求下的请求都需要设置,不是很方便,既然使用了Scrapy,它提供了专门设置UA的地方,所以接下来我们看一下如何单独设置UA。
<代码类=皃ython语言python hljs”> 1 response.request.headers[& # 39;用户代理# 39;]
代码>
▌手动添加UA
<人物> 图>第二种方法,是在设置。py文件中手动添加一些UA,然后通过<代码>随机的。选择代码>方法随机调用,即可生成UA,这种方便比较麻烦的就是需要自己去找UA,而且增加了代码行数量。
▌中间件)。py中设置UA
第三种方法,是使用fake-useragent包,在中间件)。py中间件中改写process_request()方法,添加以下几行代码即可。
<代码类=皃ython语言python hljs”> 1得到fake_useragent import UserAgent
2 class RandomUserAgent(对象):
3,,,, def process_request(自我,,请求,,蜘蛛):
4,,,,,,,, ua =, UserAgent ()
5,,,,,,,, request.headers[& # 39;用户代理# 39;],=,ua。随机
代码>
然后,我们回到<代码>设置。py 代码>文件中调用自定义的UserAgent,注意这里要先关闭默认的UA设置方法才行。
<代码类=皃ython语言python hljs”> 1 downloader_middlewares =, {
2,,,, & # 39; scrapy.downloadermiddlewares.useragent.UserAgentMiddleware& # 39;,,没有,,
3,,,, & # 39; wandoujia.middlewares.RandomUserAgent& # 39;:, 543,
4}
代码>
可以看的到,我们成功得到了随机UA。