我正在学习Python,我想开始使用Twitter的流API。我知道如何使用urllib2
构建一个读取页面内容的非常基本的应用程序,并且过去已成功完成此操作。但是,此特定Twitter流API所需的安全连接https://
似乎不适用于urllib2。
我尝试从以下链接获取JSON:https://stream.twitter.com/1.1/statuses/filter.json?locations=-122.75,36.8,-121.75,37.8
写下以下内容:
import urllib2
url = "https://stream.twitter.com/1.1/statuses/filter.json?locations=-122.75,36.8,-121.75,37.8"
print urllib2.urlopen(url).read()
然而,回溯说我没有被授权;我认为这是因为HTTPS SSL连接,研究支持这一点。所以我想我的问题是从需要这种SSL连接的链接获取JSON的最佳方法是什么?我也尝试过curl,但只能再次获得错误401。
以下是完整的追溯。
Traceback(最近一次调用最后一次):文件“”,第1行,in 文件 “/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py” 第126行,在urlopen文件中 “/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py” 第400行,打开文件 “/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py” 第513行,在http_response文件中 “/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py” 第438行,错误文件 “/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py” 第372行,在_call_chain文件中 “/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py” 第521行,在http_error_default urllib2.HTTPError:HTTP错误401: 未经授权的
非常感谢提前。
答案 0 :(得分:2)
正如其他人所说,你需要授权。这是如何做到的:
请参阅Twitter API with urllib2 in python
import urllib2
import base64
request = urllib2.Request( 'https://stream.twitter.com...' )
request.add_header( 'Authorization', 'Basic ' + base64.b64encode( username + ':' + password ) )
response = urllib2.urlopen( request )
答案 1 :(得分:1)
这不是未授权的SSL连接,而是您在进行此调用之前未明确授权系统。在提出请求之前,您需要与服务器执行某种授权。