原文首发于CSDN,略有增删
Python 爬虫使用随机 User-Agent
在编写爬虫时,大多数情况下,需要设置请求头。而在请求头中,随机更换User-Agent
可以避免触发相应的反爬机制。使用第三方库fake-useragent
便可轻松生成随机User-Agent
。
以下简单介绍fake-useragent
的安装使用,以及可能出现的问题和解决方法。
安装
fake-useragent
的 GitHub 仓库地址是:https://github.com/hellysmile/fake-useragent。可使用pip
进行安装。
pip install fake-useragent
使用
当我们需要使用随机User-Agent
时,只需通过ua.random
即可获取。代码如下:
from fake_useragent import UserAgent
ua = UserAgent()
# ......
request.add_header("User-Agent",ua.random)
# ......
在这里这是使用了fake-useragent
库的随机功能,更详细用法请参阅官方文档。
可能出现的问题和解决方法
我在使用fake-useragent
的过程中出现了FakeUserAgentError
错误。在搜索到的很多解决方法都无效,包括:
- 禁用服务器缓存:
ua = UserAgent(use_cache_server=False)
- 不缓存数据:
ua = UserAgent(cache=False)
- 忽略 SSL 验证:
ua = UserAgent(verify_ssl=False)
- 更新
fake-useragent
:pip install -U fake-useragent
最后是通过文章《FakeUserAgentError('Maximum amount of retries reached') 彻底解决办法》加载fake_useragent
本地文件才能解决。但需要从herokuapp下载(https://fake-useragent.herokuapp.com/browsers/0.1.11)fake_useragent
的JSON
文件。不过我家里的网络是打不开herokuapp的,切换到另外的网络才能打开。为了方便无法访问herokuapp网站的朋友,我也上传了一份到CSDN资源中,有需要的可以去下载。
import fake_useragent
# I am STRONGLY!!! recommend to use version suffix
location = '/home/user/fake_useragent%s.json' % fake_useragent.VERSION
ua = fake_useragent.UserAgent(path=location)
ua.random
FakeUserAgentError.png
网友评论