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는 모든 User Agent의 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

좋은 웹페이지 즐겨찾기