我是Python新手,我一直在尝试连接Twitter的公共数据流作为练习项目。我已经走到了这一步:
>>> import urllib2
>>> url = urllib2.urlopen("https://stream.twitter.com/1/statuses/sample.json")
Trackback...(omitted)
urllib2.HTTPError: HTTP Error 401: Unauthorized
预计会出现401错误,但我对如何向前移动感到不知所措。我目前正在阅读Twitter身份验证API文档,他们推荐第三方库,我可以这样做,但我想避免,因为我真的想知道发生了什么。我想你必须把OAuth数据放在标题中?我应该使用add_header()?
答案 0 :(得分:2)
您发布的链接需要HTTP身份验证:
>>> from urllib2 import *
>>> password_mgr = HTTPPasswordMgrWithDefaultRealm()
>>> url = "https://stream.twitter.com/1/statuses/sample.json"
>>> password_mgr.add_password(None, url, 'USERNAME', 'PASSWORD')
#worked with my real twitter credentials ^
>>> h = HTTPBasicAuthHandler(password_mgr)
>>> opener = build_opener(h)
>>> page = opener.open(url)
>>> page.getcode()
200
请参阅this