最近一个爬虫项目,目标网站有个页面爬取过程很复杂,不仅让我掏腰包购买了收费代理ip,还不允许UA(UserAgent)相同,于是乎,我在网上看到有这么个python库:fake-useragent。
使用fake-useragent可以随机生成UserAgent,效果如下:

from fake_useragent import UserAgent

ua = UserAgent(path='')
print(ua.ie)   # 随机打印ie浏览器任意版本
print(ua.firefox)  # 随机打印firefox浏览器任意版本
print(ua.chrome)  # 随机打印chrome浏览器任意版本
print(ua.random)  # 随机打印任意厂家的浏览器

TIM截图20191009184349.png
但是,这个库安装之后不能正常使用,你按照上面的代码运行后,会发现报了一长串的错误:……Maximum amount of retries reached
下面这篇博客来详细讲述一下fake_useragent库的安装以及修复报错,让它正常使用。

fake_useragent安装

安装很简单,直接使用:

pip install fake-useragent

但是我在这样安装的时候,一直卡在那里,页面不动:
TIM截图20191009184800.png
如果你也和我一样不幸,可以使用下面的方法。
我用的python开发工具是pycharm,打开页面的file>>setting:
TIM截图20191009184954.png
然后找到Project Interpreter,点击右边的“+”号:
TIM截图20191009185141.png
最后在页面左侧的搜索框输入fake-useragent,选中fake-useragent,点击底部的Install Package,等待安装完成就行:
TIM截图20191009185649.png

测试是否报错

输入下面的代码:

from fake_useragent import UserAgent

ua = UserAgent(path='')
print(ua.ie)   # 随机打印ie浏览器任意版本
print(ua.firefox)  # 随机打印firefox浏览器任意版本
print(ua.chrome)  # 随机打印chrome浏览器任意版本
print(ua.random)  # 随机打印任意厂家的浏览器

正常情况下会报下面的错:
TIM截图20191009190103.png
从报错信息中可以看出来这个错误和打开网址超时有一定的关系。

报错原因分析

不想看报错原因,只想看怎么解决的可以迅速下滑直接看解决方案。
其实,fake-useragent这个库里面的大量UserAgent并非在安装的时候顺便下载到本地,当你安装之后实例化UserAgent的时候,它会到网上去下载这些UserAgent,然后在本地保存为临时文件,打开site-packages中fake_useragent目录下的setting.py,我们可以看到里面有几个地址:
TIM截图20191009190613.png
其中的第二个第三个地址已经不能正常访问,只有第一个可以看到大量的UserAgent数据:
TIM截图20191009190754.png
就是因为这些地址不能正常访问,导致超时,就会报上面出现的错误。

修复错误

我们可以直接访问刚才那个可以正常访问的地址(https://fake-useragent.herokuapp.com/browsers/0.1.11),然后将网页的内容全部保存下来,注意后缀要设置为json,如果你看到这篇博客的时候不能访问这个网址,那么也可以直接下载下面的文件:
fake_useragent.json
将你下载的json文件移到你的项目或者你比较熟悉的地方,我就放在我的项目根目录,然后修改我们刚才测试的代码:

from fake_useragent import UserAgent

ua = UserAgent(path='fake_useragent.json')
print(ua.ie)   # 随机打印ie浏览器任意版本
print(ua.firefox)  # 随机打印firefox浏览器任意版本
print(ua.chrome)  # 随机打印chrome浏览器任意版本
print(ua.random)  # 随机打印任意厂家的浏览器

运行结果:
TIM截图20191009191502.png
修改之后,报错消失,我们就可以随机取用一个UserAgent来爬取我们的目标网站

最后修改:2019 年 10 月 09 日
如果觉得我的文章对你有用,请随意赞赏