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

2024-05-08 23:44:04 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我试图使用一个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)

我得到了和上次一样的回溯。


Tags: inpysendapiurlgetrequestlib
2条回答

虽然我自己无法解决这个问题,但我找到了一个解决方法,在这个方法中,我不使用请求,而是使用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是一本字典,里面有我要找的任何数据。不过,如果有人能告诉我这个错误的正确解决方案,那将是非常有用的。

这种方法对我很有效:

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

相关问题 更多 >

    热门问题