用户身份验证和Python中的文本解析

时间:2009-06-14 19:55:10

标签: python http authentication urllib2

我正在制作一个多阶段计划...... 我在完成第一阶段时遇到了麻烦.. 我想要做的是登录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 个答案:

答案 0 :(得分: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()

答案 1 :(得分:3)

Twitter的常规Web界面不使用基本身份验证,因此使用此方法从Web界面请求页面将不起作用。

根据the Twitter API docs,您可以通过提取此网址来检索私人消息:

http://twitter.com/direct_messages.format

格式可以是xml,json,rss或atom。此URL确实接受基本身份验证。

此外,您的代码根本不使用它构建的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