2011-10-25 56 views
3

我正在使用機械化(and following this tutorial)嘗試登錄到網站。我想嘗試測試它在Twitter上,所以這是劇本,我想出了:使用Python機械化登錄到網站?

import mechanize 
import cookielib 

username = 'user' # your username/email 
password = 'pass' # your password 

br = mechanize.Browser() 

# set cookies 
cookies = cookielib.LWPCookieJar() 
br.set_cookiejar(cookies) 

# browser settings (used to emulate a browser) 
br.set_handle_equiv(True) 
br.set_handle_redirect(True) 
br.set_handle_referer(True) 
br.set_handle_robots(False) 
br.set_debug_http(False) 
br.set_debug_responses(False) 
br.set_debug_redirects(False) 
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time = 1) 
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')] 

br.open('http://twitter.com/') # open twitter 

br.select_form(nr=1) # select the form 

br['session[username_or_email]'] = username 
br['session[password]'] = password 
br.submit() # submit the login data 
print(br.response().read) # print the response 

這裏是當我運行我的腳本輸出的Python:

$ python twitterLoginTest.py 
<bound method response_seek_wrapper.read of <response_seek_wrapper at 0x8feaeac whose wrapped object = <closeable_response at 0x8feeaac whose fp = <socket._fileobject object at 0x8feb42c>>>> 

(名字的文件是twitterLoginTest.py)

現在,我不太確定那個響應是什麼意思,但它看起來並不正確。

因此,這裏是我的問題

1)是否有登錄到使用腳本(不只是Twitter的網站更好的辦法,但是任何網站,並且可以修改了登錄任何網站工作的方法在)?

2)我的腳本在哪裏出錯?

3)如何解決問題,登錄?

我有一個假設,問題是從br.select_form(nr=1)(這是我選擇表單),但我不知道該放什麼(所以我認爲這將是第二種形式),因爲Twitter沒有命名他們的形式。

回答

4

我相信最後一行應該是:

print(br.response().read()) # print the response 

通知的()read後。您目前只是在打印read方法本身,而不是調用read方法的結果。

+0

我現在正式覺得很蠢,你的答案奏效,謝謝! – Bhaxy