我在调用fake_useragent这个包时出现fake_useragent.errors.FakeUserAgentError: Maximum amount of retries reached错误,本文详细分析了这个错误并且给出了解决方案。

一、错误信息

这是报错的命令:

1

2from fake_useragent import UserAgent

ua = UserAgent()

这是错误信息:

1

2

3

4

5

6

7

8Traceback (most recent call last):

File "f:\python36\lib\site-packages\fake_useragent\utils.py", line 154, in load

for item in get_browsers(verify_ssl=verify_ssl):

File "f:\python36\lib\site-packages\fake_useragent\utils.py", line 97, in get_browsers

html = get(settings.BROWSERS_STATS_PAGE, verify_ssl=verify_ssl)

File "f:\python36\lib\site-packages\fake_useragent\utils.py", line 84, in get

raise FakeUserAgentError('Maximum amount of retries reached')

fake_useragent.errors.FakeUserAgentError: Maximum amount of retries reached

二、错误分析

依据报错,初步推断是网络超时,从网查阅资料得知,这个库会引用在线资源,经排查,fake_useragent\settings.py相关配置如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22# -*- coding: utf-8 -*-

from __future__ import absolute_import, unicode_literals

import os

import tempfile

__version__ = '0.1.11'

DB = os.path.join(

tempfile.gettempdir(),

'fake_useragent_{version}.json'.format(

version=__version__,

),

)

CACHE_SERVER = 'https://fake-useragent.herokuapp.com/browsers/{version}'.format(

version=__version__,

)

BROWSERS_STATS_PAGE = 'https://www.w3schools.com/browsers/default.asp'

BROWSER_BASE_PAGE = 'http://useragentstring.com/pages/useragentstring.php?name={browser}' # noqa

其中,这个网站https://www.w3schools.com/browsers/default.asp打不开,导致超时报错

依次查看其它url,发现都可以正常打开,其中CACHE_SERVER是存储了所有UserAgent的json数据,再次观察其中DB这个变量,结合fake_useragent\fake.py中的逻辑,判断这个变量应该是存储json数据的,所以大体逻辑应该是,首次初始化时,会自动爬取CACHE_SERVER中的json数据,然后将其存储到本地,所以我们直接将json存到指定路径下,再次初始化时,应该就不会报错。

三、根本解决方案

1、查看指定路径1

2

3import tempfile

print(tempfile.gettempdir())

1/var/folders/6_/p67xz49j5wd5lzx7s2cz1cdr0000gn/T

2、手动下载json文件

我们需要将CACHE_SERVER的json数据保存为fake_useragent_0.1.11.json,并放到目录/var/folders/6_/p67xz49j5wd5lzx7s2cz1cdr0000gn/T中。

1wget https://fake-useragent.herokuapp.com/browsers/0.1.11

这时我们就会得到一个0.1.11的文件,将文件名改为fake_useragent_0.1.11.json:

1mv 0.1.11 fake_useragent_0.1.11.json

最后将文件拷贝到临时目录中即可

1cp fake_useragent_0.1.11.json /var/folders/6_/p67xz49j5wd5lzx7s2cz1cdr0000gn/T/

当我们再次实例化 UserAgent 的时候,就会先读取本地的临时文件,这样实例化的时候就不会报错了。

注:如果CACHE_SERVER不是https://fake-useragent.herokuapp.com/browsers/0.1.11,请更新一下库pip install --upgrade fake_useragent。

四、简单的解决方案——在实例化的时候指定一些参数

这里首先需要更新下库:

1pip install --upgrade fake_useragent

如果不希望缓存数据库或不需要可写文件系统:

1ua = UserAgent(use_cache_server=False)

如果不想使用宿主缓存服务器,可以禁用服务器缓存:

1ua = UserAgent(cache=False)

忽略ssl验证

1ua = UserAgent(verify_ssl=False)

python 3.6.6安装fake_Python fake_useragent报错解决方案相关推荐

  1. 解决python通过pip离线安装flask,numpy报错解决(centos)

    1. 离线安装Python https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tgz 解压,编译,安装 tar xzvf Python-3.7. ...

  2. Python中使用pip安装第三方库报错解决方法

    参考:https://blog.csdn.net/answerxiaoai/article/details/104297187 在安装Google开源维护的算法优化求解器Ortools时出现错误,采用 ...

  3. Anaconda安装scikit-learn库报错 解决方案

    一.问题描述 用pycharm时,安装sklearn库失败,提示说 在Anaconda Prompt 终端 安装,但是我在终端环境运行代码还是报错,如下 报错: ERROR conda.core.li ...

  4. 转录组组装软件--Bridger安装使用和报错解决方案

    @转录组组装软件----Bridger安装注意事项和使用 #前言 在很多的文章中都看到了关于转录组组装软件–Bridger的推荐,但是找遍了很多平台都没有找到详细的安装教程,众所周知,安装软件都需要去 ...

  5. 安装nvidia驱动报错解决方案

    报错如下: ERROR: You appear to be running an X server; please exit X before installing.  For further det ...

  6. python如何安装scrapy库_python2安装scrapy库报错解决方案

    build/temp.linux-x86_64-2.7/_openssl.c:434:30: fatal error: openssl/opensslv.h: 没有那个文件或目录 compilatio ...

  7. 基于pip的安装lxml库报错解决方案

    pip是python中经常使用可以便捷安装python其他库的一款软件,我们经常在命令行cmd中使用它. 安装lxml库的时候容易出现没法从网上安装twisted库的错误,解决方案是从将twisted ...

  8. python 3.6.6安装fake_Python3 fake_useragent 模块的使用和报错解决方案

    在使用 Python 做爬虫的时候,我们需要伪装头部信息骗过网站的防爬策略,Python 中的第三方模块 fake_useragent 就很好的解决了这个问题,它将给我们返回一个随机封装了好的头部信息 ...

  9. python psutil库安装_安装psutil模块报错安装python-devel

    psutil/_psutil_linux.c:9:20: 错误:Python.h:没有那个文件或目录 In file included from psutil/_psutil_linux.c:19: ...

最新文章

  1. CSDN博客获取积分规则!不是下载积分!如何快速增长积分!
  2. 面向过程方法学开发软件的特点
  3. C#数据结构-广义表和递归
  4. 一起学习C语言:数组(三)
  5. java 特殊字符过滤器_java处理url中的特殊字符
  6. 腾讯云三大自研数据库之一 TBase 开源后首次重磅升级,复杂查询性能最高提升十倍
  7. mysql install语句_MySQL入门学习(一)安装与基本操作
  8. 「干货」Web安全红队外围信息收集「详细总结」
  9. c语言简易计算器大作业报告,c语言计算器的实验报告
  10. 七夕怕被偷窥?摄像头探测器来帮您!
  11. WSUS:数据库从WID 换成 SQLExpress
  12. SourceInsight4.0黑色背景主题
  13. 2022年,来者犹可追
  14. css如何绘制一个等边三角形
  15. 第八届中国大学计算机设计大赛,2015年(第八届)中国大学生计算机设计大赛.PDF...
  16. Electron 远程控制
  17. 你怎么看欧阳娜娜空降阿里p8?
  18. python 支付宝接口_python实现支付宝转账接口
  19. Linux安全基础知识
  20. oracle数据库添加序列

热门文章

  1. 不是中国需要谷歌,而是谷歌需要中国
  2. uniapp分享给好友、分享到朋友圈(带参数)。参数带不过去/参数获取不到
  3. H5前端手机调试打印之vConsole
  4. java name.endswith,Java CompositeName endsWith()用法及代码示例
  5. Java Doc--{@link}和@see--使用
  6. Failed to load session “ubuntu”的解决办法
  7. 【事务代码】MF60-拉料清单
  8. 干了2年的手工点点点,感觉每天浑浑噩噩,我的自动化测试之路...
  9. 电商控价,为什么要找控价公司
  10. mac python3.* ModuleNotFoundError: No module named 'MySQLdb'