Python中的用户认证和文本解析

1 投票
2 回答
1348 浏览
提问于 2025-04-15 12:14

我正在做一个多阶段的程序……

我在完成第一阶段时遇到了麻烦……

我想做的是登录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())

撰写回答