Python中的用户认证和文本解析
我正在做一个多阶段的程序……
我在完成第一阶段时遇到了麻烦……
我想做的是登录Twitter.com,然后查看用户页面上的所有私信。
最终,我会查看所有的私信,寻找特定的内容,但这应该不难。
这是我目前的代码:
import urllib
import urllib2
import httplib
import sys
userName = "notmyusername"
password = "notmypassword"
URL = "http://twitter.com/#inbox"
password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
password_mgr.add_password(None, "http://twitter.com/", userName, password)
handler = urllib2.HTTPBasicAuthHandler(password_mgr)
pageshit = urllib2.urlopen(URL, "80").readlines()
print pageshit
所以,如果能给我一些建议,告诉我哪里做错了,那将非常有帮助。
2 个回答
3
Twitter的普通网页界面不支持基本认证,所以用这种方法请求网页是行不通的。
根据Twitter的API文档,你可以通过访问这个网址来获取私信:
http://twitter.com/direct_messages.format
返回的数据格式可以是xml、json、rss或atom。这个网址是支持基本认证的。
另外,你的代码根本没有使用它创建的handler
对象。
下面是一个解决了这两个问题的示例,它可以以json格式获取私信:
import urllib2
username = "USERNAME"
password = "PASSWORD"
URL = "http://twitter.com/direct_messages.json"
password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
password_mgr.add_password(None, "http://twitter.com/", username, password)
handler = urllib2.HTTPBasicAuthHandler(password_mgr)
opener = urllib2.build_opener(handler)
try:
file_obj = opener.open(URL)
messages = file_obj.read()
print messages
except IOError, e:
print "Error: ", e
5
Twitter并不使用HTTP基本认证来验证用户身份。在这种情况下,使用Twitter的API会更好。
这里有一个关于如何用Python使用Twitter API的教程:[http://www.webmonkey.com/tutorial/Get_Started_With_the_Twitter_API
](http://www.webmonkey.com/tutorial/Get_Started_With_the_Twitter_API())