2014-01-22 2 views
2

그래서 인터넷에서 데이터를 가져 오기 위해 API (http://twittercounter.com/pages/api)를 사용하려고합니다. 브라우저에서 직접 API 키를 사용하는 동안 필요한 결과를 얻고 있습니다. 그러나 파이썬에서 requests.get() 함수를 사용할 때 오류가 발생했습니다. 여기에 추적 코드가 제공됩니다.Python requests.exceptions.ConnectionError : HTTPSConnectionPool : 최대 재시도 횟수가 url : [Errno 111] Connection refused를 초과했습니다.

코드 :

>>> import requests 
>>> r = requests.get('https://api.twittercounter.com/?apikey=XXXX&twitter_id=57947109') 

역 추적 :

File "<stdin>", line 1, in <module> 
    File "/usr/lib/python2.7/site-packages/requests/api.py", line 55, in get 
    return request('get', url, **kwargs) 
    File "/usr/lib/python2.7/site-packages/requests/api.py", line 44, in request 
    return session.request(method=method, url=url, **kwargs) 
    File "/usr/lib/python2.7/site-packages/requests/sessions.py", line 382, in request 
    resp = self.send(prep, **send_kwargs) 
    File "/usr/lib/python2.7/site-packages/requests/sessions.py", line 485, in send 
    r = adapter.send(request, **kwargs) 
    File "/usr/lib/python2.7/site-packages/requests/adapters.py", line 372, in send 
    raise ConnectionError(e) 
requests.exceptions.ConnectionError: HTTPSConnectionPool(host='api.twittercounter.com', port=443): Max retries exceeded with url: /?apikey=XXXX&twitter_id=57947109 (Caused by <class 'socket.error'>: [Errno 111] Connection refused) 

내가이 키에 대한 10 개의 연결을 만들고, 속도 제한 (100), 그래서 내가 한계를 초과하고 있지 않다 확신합니다. 누구든지 도와주세요. 나는 요청과 http를 가진 많은 멍청하다. 내가 브라우저 에이전트를 변경하려면이 시도 요청 헤더

에서 브라우저 에이전트를 설정했는데, 그것은 여전히 ​​

>>> headers = { 
...  'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0'} 
>>> url = 'https://api.twittercounter.com/?apikey=09792d72d848c55a5b6b9a1bf3bb225a&twitter_id=57947109' 
>>> response = requests.get(url, headers=headers) 

오전 지난번과 같은 역 추적을 받고 작동하지 않습니다

편집 할 수 있습니다.

+0

영구적 또는 수시로이 예외를받을 수 있나요? 나는 최근에이 문제에 직면 해 왔지만, 때때로 ** 예외가 생겼습니다. 그래서 방금 예외를 잡은 다음 연결을 다시 시도했습니다. 그것은 나를 위해 일했다. –

+1

@DmitryVakhrushev이 영구적으로 받고 있습니다. 나는 예외를 잡으려고 시도했지만 다시 시도 할 때 같은 오류가 다시 발생합니다. ( –

+1

@DmitryVakhrushev, 여기 코드 또는 일부 조각을 여기에 붙여 넣을 수 있습니까? 아마도 도움이 될 것입니다. –

답변

1

이 방법은 나를 위해 완벽하게 작동 :

>>> import requests 
>>> url = 'http://api.twittercounter.com/' 
>>> payload = {'apikey': 'XXXXXX', 'twitter_id':53687449} 
>>> requests.get(url, params=payload) 
<Response [200]> 
+1

나는 잘 모르겠다. 그러나 이것은 요청에서 반복되는 문제로 보입니다. 그리고 많은 사람들이이 오류에 대해 나에게 말했습니다. 대부분 일시적으로 나타나지만, tim es는 나의 상황을 좋아하고 전혀 해결되지 않습니다. 나는 이것을 위해 httplib 모듈을 사용해야 만했다. –

+0

어떤 버전의 요청을 사용하고 있습니까? –

+1

어제 업데이트 된 최신 버전 –

0

직접이 문제를 해결할 수는 없지만 요청을 사용하는 대신 httplib을 사용하고 ast 모듈을 사용해야했던 문제 해결 방법을 발견했습니다. 내가 사용한 코드는 다음과 같습니다.

>>> import httplib 
>>> conn = httplib.HTTPConnection("api.twittercounter.com") 
>>> conn.request("GET", "?apikey=XXXX&twitter_id=15160529") 
>>> r1 = conn.getresponse() 
>>> a = r1.read() 
>>> import ast 
>>> b = ast.literal_eval(a) 

이제 b는 내가 원하는 데이터가있는 사전입니다. 그러나 누군가가 나에게이 오류에 대한 적절한 해결책을 말할 수 있다면 매우 유용 할 것입니다.

관련 문제