2013-04-01 73 views
0

嘗試使用Python機械化登錄到網頁。由於我在找到正確的表單時遇到問題,而不是發佈URL(代碼可能會更改),所以我會將一些代碼複製到此處以供將來用戶使用。我讀this,但似乎沒有一個明確的答案。Python機械化 - 表單提交 - 選擇正確的表格

無論如何,我在this tutorial之前完成了所有的機械化工作,直到我獲得表格。

當我打電話:

for form in br.forms(): 
    print form 

我回去:

POST https://www.myexample.com/x-www-form-urlencoded 
HiddenControl(utf8=✓) (readonly) 
HiddenControl(authenticity_token=BfqPL1ilOXeg08Or/CEBAiK4duWgncY=  
CheckboxControl(affiliate[remember_me]=[1]) 

望着原始的HTML我看到:

<label for="affiliate_email">Email<./label> 
<.input autofocus="autofocus" id="affiliate_email" 
    name="affiliate[email]" size="30" type="email" /> 

然而,當我嘗試選擇電子郵件字段我得到一個表單未找到錯誤。

br.select_form(name="affiliate[email]") 
# updated to 
br.select_form(nr=0) 
# Now what do I do here to enter something into that form? 
br.form['someIDhere']='[email protected]' 

我也嘗試過使用表單ID和許多其他可能的表單名稱。我不明白爲什麼使用br.forms()打印表單會返回這些奇怪的結果,這是否意味着該網站正在使用javascript登錄表單?

預先感謝您!

回答

0

affiliate[email]不是形式的名稱,但形式內的輸入的。 嘗試使用:

br.select_form(nr=0) 

如果表單沒有名稱,並在頁面上的第一個/唯一形式。

+0

好吧,我總算使用了錯誤的語法圍繞我有一個問題有關的部分,我的意思是br.form [「」](選擇的形式,我必須將數據輸入之後)。更新了我的帖子。謝謝! – Joker