2014-01-22 3 views
2

Итак, я пытаюсь использовать API (http://twittercounter.com/pages/api), чтобы получить некоторые данные из сети. При использовании моего API-ключа прямо через браузер, я получаю требуемые результаты. Но при использовании функции request.get() в python, я получаю сообщение об ошибке, здесь приведена трассировка.Python request.exceptions.ConnectionError: HTTPSConnectionPool: Максимальное количество попыток превышено с URL: [Errno 111] Connection failed)

код:

>>> 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.

EDIT: Пытались установить браузер агента в заголовках запросов

Я пытался это изменить агент браузера, и он по-прежнему не работает

>>> 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) 

Am получать тот же отслеживающий, как в прошлый раз.

+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

Я не знаю. Но это, кажется, повторяющаяся проблема в запросах, и многие люди рассказывали мне об этой ошибке, в основном появляющейся временно, но во время как моя ситуация, а не решаться вообще. Для этого мне пришлось использовать модуль 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 - словарь, который имеет любые данные, которые я ищу. Однако, если кто-то может сказать мне правильное решение этой ошибки, это было бы очень полезно.

Смежные вопросы