我剛開始在Python中使用機械化,我已經有一些問題了。我瀏覽過StackOverflow和Google,我也看到有人說文檔很棒,應該很容易讓它工作,但我認爲我不知道該如何查找這些文檔,因爲所有的可以找到代碼示例,這些代碼示例並不真正教會我如何執行我正在嘗試做的特定事情。如果有人能夠指出我的這些文件,我很樂意自己閱讀並解決我的問題。Python中的機械化 - 提交後重定向不工作
對於實際問題,我試圖通過在表單中發送我的用戶名和密碼信息登錄到網站。當信息正確時,我通常會重定向,但它在機械化中不起作用。
這是我沒有得到的部分,因爲如果我在調用提交後立即打印頁面的html內容,頁面將顯示一個變量,顯示身份驗證是否有效。如果我將密碼更改爲不正確的密碼,則html會顯示一條消息「無效的憑據」,就像我正常瀏覽網站時一樣。
這是我如何做的代碼示例。請記住,這可能是完全錯誤的,因爲我只是想運用我在實例中發現:
import mechanize
import cookielib
# Start Browser
br = mechanize.Browser()
cj = cookielib.LWPCookieJar()
br.set_cookiejar(cj)
br.set_handle_equiv(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)
br.open('http://www.complexejuliequilles.com/')
for l in br.links(url_regex='secure'):
br.follow_link(l)
br.select_form('form1')
br.form['fldUsername'] = 'myUsername'
br.form['fldPassword'] = 'myPassword'
br.submit()
在這個特殊的例子,我打開http://www.complexejuliequilles.com,然後我按照在具有底部的鏈接文本「管理」,我在表單中輸入我的憑證,然後提交。通常情況下,我將被重定向到我所在的第一個頁面,但只有更多的按鈕可供管理員使用。我想單擊其中一個鏈接來填寫另一個表單,以添加我擁有其電子郵件地址,姓名等的用戶列表。
有沒有簡單的東西我錯過了?我想我已經掌握了基礎知識,但是我不知道該庫足以找出重定向發生了什麼問題。
這是很好的建議!對於for循環,這是我已經複製並適應了我的需求,但你的方式顯然更好。我只是有一個問題,雖然...你說我可以解析html_data來找到重定向URL,我可以管理它,但是我不知道在我擁有這個URL之後我應該調用什麼函數,所以我可以保持登錄狀態......我還在想,如果我已經知道重定向url而不會丟失我的登錄信息,是否真的必須解析html才能獲得重定向鏈接,或者如果我可以硬編碼它? – 2012-07-31 12:46:17
它只是br.open(link_string)。 – 2012-08-02 03:31:33
您可以對鏈接字符串進行硬編碼,但您應該知道如果鏈接更改,您的代碼將被棄用。你不應該用cookies來擔心:機械化瀏覽器管理cookies,你可以認爲你是在一個普通的圖形瀏覽器內的地址欄中輸入你的鏈接。只要不打開另一個瀏覽器(即始終使用您創建的相同「br」),因此您的cookies將被保存在「jar」中(即,登錄不應該丟失)。 – 2012-08-02 03:45:26