2010-08-18 64 views

回答

3

這將幫助你登錄到一個站點,下載頁面,例如:

import mechanize 
br=mechanize.Browser() 
br.open('http://www.yourfavoritesite.com') 
br.select_form(nr=0) #check yoursite forms to match the correct number 
br['Username']='Username' #use the proper input type=text name 
br['Password']='Password' #use the proper input type=password name 
br.submit() 
br.retrieve('https://www.yourfavoritesite.com/pagetoretrieve.html','yourfavoritepage.html') 

該腳本假定您的登錄表單頁面的第一和輸入名稱UsernamePassword
您可以通過名字也與選擇的形式:

br.select_form(name="thisthing") 

請,適應這個腳本您最喜愛的網站的登錄頁面。
AlexMartelli指出,這個腳本應該被推廣到處理不同的站點的一些配置參數。

+0

urhm,你的表單號碼是什麼意思?你的意思是喜歡HTML中的表單的名稱?和檢索做什麼? '

' – user377419 2010-08-18 21:16:57

+0

@shorty請參閱我的編輯 – systempuntoout 2010-08-18 21:18:18

+0

還有一件事我該如何知道登錄是否成功? – user377419 2010-08-18 21:29:22

1

您最喜歡的每個網站可能都有不同的表單(表單編號以及用戶名和密碼字段),並且希望每個用戶都使用不同的用戶名和密碼(在許多網站上使用相同的用戶名和密碼錶示如果有的網站被破解,你的身份現在已經被「妥協」了 - 相當混亂!)。因此,您可以硬編碼所有這些參數,如在@ systempuntoout的答案中,或者使用所有這些信息爲每個站點編寫一個小配置文本文件(例如ConfigParser支持的格式),以便您可以在腳本啓動時加載配置,並寫入「log_me_in」函數,只需一次,它將sitename作爲參數並查找並使用依賴於它的參數。

如果你有很多的「最喜愛的網站」,使加載他們所有的信息感知減慢你的啓動時間,那麼你可能甚至要考慮更靈活地堅持該信息(例如在sqlite表),所以它可以迅速查找一個或幾個網站,因爲它們的名稱是使用的「關鍵」。