Python爬虫学习笔记-Scrapy随机使用User-Agent
这几天心血来潮想学习 Python,但是我是那种不喜欢从头学起的人,我比较喜欢在一个项目中学习一样东西。正好阿里云大学里面有 Python 爬虫的课程,我就开始学习了。
今天学到 Scrapy 爬虫项目编写实战这一讲时,遇到了一点小问题,在网上找了几个大神的帖子看了看,解决了。这里写个笔记记录一下,以后要用到的时候方便些。
下面进入正题:在 scrapy 里,设置随机的 User-Agent 有两种方式
- 在 middlewares 中添加
- 在 spider 的 request 中添加
第一种,在 middleware 中添加
- 安装 fake-useragent
pip install fake-useragent
这个包里面内置了许多浏览器的 User-Agent,这样就不用我们自己再建了 - 在 scrapy 项目的 middlewares.py 导入 fake-useragent 包
from fake_useragent import UserAgent
然后讲下面的RandomUserAgentMiddleware
复制进去
1 | class RandomUserAgentMiddleware(object): |
最后在 setting.py 中的DOWNLOADER_MIDDLEWARES
里将其添加进去,这里的ProjectName
改为你的项目名
1 | DOWNLOADER_MIDDLEWARES = { |
这样就设置好了,之后爬虫启动后,每一个 request 请求的 User-Agent 都是一个随机的值。
第二种,在 spider 中添加
我们以 baidu 首页为例
- 同样时先导入 fake-useragent 包,然后在 parse 方法里面,我们请求十次
- 添加一个
second_parse
作为 parse 函数的回调函数,处理 parse 函数里面请求的响应值 - 在
second_parse
里添加print(response.request.heasers['User-Agent'])
用来观察我们设置的 User-Agent 是否生效。具体代码如下:
1 | def parse(self, response): |
这样就设置好了
结束语
以上两种方法都可以用来设置 User-Agent,只要我们根据要爬的网站的特性,任选一种即可。
评论