2012-07-04 60 views
0

有人能告訴我爲什麼這不起作用嗎?使用cookielib的Twitter認證

import cookielib 
import urllib 
import urllib2 
cj = cookielib.CookieJar() 
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) 
data = urllib.urlencode({'session[username_or_email]':'twitter handle' , 'session[password]':'password'}) 
opener.open('https://twitter.com' , data) 
stuff = opener.open('https://twitter.com') 
print stuff.read() 

爲什麼登錄後不給頁面的html?

回答

0

請考慮爲您的任務使用Oauth庫。不推薦使用機械化來刮擦網站,因爲twitter可以隨時更改HTML特定的內容,然後你的代碼就會中斷。

檢查了這一點:Python的Twitter上http://code.google.com/p/python-twitter/

最簡單的例子發佈更新:

>>> import twitter 
>>> api = twitter.Api(
      consumer_key='yourConsumerKey', 
      consumer_secret='consumerSecret', 
      access_token_key='accessToken', 
      access_token_secret='accessTokenSecret') 
>>> api.PostUpdate('Blah blah lbah!') 

可以有它爲什麼失敗的原因是多方面的:

  • Twitter可能會預計一個User-Agent標題,這是你沒有提供的。
  • 我沒有看HTML,但很多人在表單實際提交之前有一些Javascript在播放(實際上我認爲這是事實,因爲我隱約記得在這個確切的事情上寫了一個非常詳細的答案(和我似乎沒有找到它的鏈接!))。
+0

添加了一個用戶代理,但即使這是行不通的,那麼你建議我怎樣處理Javascript。我試過tweepy,但我想嘗試建立自己的圖書館來訪問twitter,這就是爲什麼 – Manoj

+0

處理Javascript並不是很容易。 Python沒有這個原生庫。可能是硒可以幫助。但無論如何,我建議你使用這些API,它們是**最可靠的。 – SuperSaiyan