Python requests.exceptions.ConnectionError:HTTPSConnectionPool:使用url超出最大重试次数:[Errno 111]拒绝连接)

时间:2014-01-22 05:40:03

标签: python twitter python-requests

所以我试图使用API​​(http://twittercounter.com/pages/api)从网上获取一些数据。在通过浏览器直接使用我的API密钥时,我得到了所需的结果。但是在python中使用requests.get()函数时,我收到一个错误,这里给出了回溯。

代码:

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

我得到的回溯与上次相同。

2 个答案:

答案 0 :(得分:1)

这种方法非常适合我:

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

答案 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是一个包含我正在寻找的数据的字典。但是,如果有人能告诉我这个错误的正确解决方案,那将非常有用。