2014-02-14 61 views
1

如果您查看以下鏈接的源代碼,您將看到兩種表單,我正在尋找名稱爲「doLoginPin」的表單。當我做下面的表單沒有找到。這種形式是動態生成的,因此無法找到?有沒有人遇到過,並提出解決方案?無法找到表單

br.open('https://www.getipass.com/ipass/LoginPin.jsp') 

for f in br.forms(): 
    print f 

最終我的目標是獲得登錄和刮我的一些基本帳戶數據。謝謝。

+0

爲什麼不直接發送適當的請求到表單發送數據的任何地址? –

+0

@ RyanO'Donnell我會怎麼做?表單操作是action =「LoginPin.jsp」 – jsm1th

+0

查看請求庫:http://docs.python-requests.org/en/latest/ –

回答

2

一個簡單的方法可以使用Selenium Webdriver。它允許你驅動一個真正的瀏覽器發出請求。它有時可能有點沉重,但我覺得它對於這些小任務很有用(我建議使用Firefox作爲瀏覽器來驅動)。

您可以用pip install selenium安裝。

此腳本將嘗試使用用戶名foo和密碼bar登錄。

from selenium import webdriver 

if __name__ == '__main__': 
    url = 'https://www.getipass.com/ipass/LoginPin.jsp' 
    driver = webdriver.Firefox() 
    driver.get(url) 

    username = driver.find_element_by_name('txtLoginParam') 
    password = driver.find_element_by_name('txtPass') 
    username.send_keys('foo') 
    password.send_keys('bar') 
    password.submit()