1

好吧,我正在开发一个多阶段程序……我无法完成第一阶段……我想做的是登录 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

因此,对我做错的事情有一点见解和帮助会很有帮助。

4

2 回答 2

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()

于 2009-06-14T20:05:58.323 回答
3

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

根据Twitter API 文档,您可以通过获取此 URL 来检索私人消息:

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
于 2009-06-14T20:11:32.630 回答