fake_useragent 實例化對象時報錯

import fake_useragent

# 實例化對象時報錯
ua = fake_useragent.UserAgent()
socket.timeout: timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "d:\programdata\anaconda3\lib\site-packages\fake_useragent\utils.py", lin
e 166, in load
    verify_ssl=verify_ssl,
  File "d:\programdata\anaconda3\lib\site-packages\fake_useragent\utils.py", lin
e 122, in get_browser_versions
    verify_ssl=verify_ssl,
  File "d:\programdata\anaconda3\lib\site-packages\fake_useragent\utils.py", lin
e 84, in get
    raise FakeUserAgentError('Maximum amount of retries reached')
fake_useragent.errors.FakeUserAgentError: Maximum amount of retries reached

依據報錯,初步推斷是網絡超時,從網查閱資料得知,這個庫會引用在線資源,經排查,相關配置如下

fake_useragent\settings.py

# -*- 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存到指定路徑下,再次初始化時,應該就不會報錯

In [11]: import tempfile

In [13]: print(tempfile.gettempdir())
C:\Users\ADMINI~1.-20\AppData\Local\Temp\1

CACHE_SERVER的json數據保存爲fake_useragent_0.1.11.json,並放到目錄C:\Users\ADMINI~1.-20\AppData\Local\Temp\1

再次調用,可以正常調用

In [24]: import fake_useragent

In [25]: ua = fake_useragent.UserAgent()	# 這個過程沒有再次去獲取在線數據

In [26]: ua.data_browsers['chrome'][0]
Out[26]: 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Ch
rome/41.0.2228.0 Safari/537.36'

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章