Аутентификация пользователя и анализ текста в Python - PullRequest
1 голос
/ 14 июня 2009

Ну, я работаю над многоступенчатой ​​программой ... У меня проблемы с выполнением первого этапа .. Я хочу зайти на 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 ]

5 голосов
/ 15 июня 2009

Twitter не использует базовую аутентификацию HTTP для аутентификации своих пользователей. В этом случае было бы лучше использовать API Twitter.

Учебник по использованию Python с API-интерфейсом Twitter находится здесь: [http://www.webmonkey.com/tutorial/Get_Started_With_the_Twitter_API] (http://www.webmonkey.com/tutorial/Get_Started_With_the_Twitter_API()

3 голосов
/ 15 июня 2009

Обычный веб-интерфейс Twitter не использует базовую аутентификацию, поэтому запрос страниц из веб-интерфейса с использованием этого метода не будет работать.

Согласно документации API Twitter , вы можете получать личные сообщения, выбирая этот 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
...