python 3.6.6安装fake_Python fake_useragent报错解决方案

我在调用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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值