所以我试图使用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)
我得到的回溯与上次相同。
答案 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是一个包含我正在寻找的数据的字典。但是,如果有人能告诉我这个错误的正确解决方案,那将非常有用。