我正在連接一個頁面,需要登錄與機械化。它在頭版上使用了一些JavaScript,使得使用機械化直線更困難。我知道我必須提交什麼表單來登錄 - 總是由js生成的表單,每次都是一樣的。我怎樣才能使機械化只是提交不在頁面上的自定義表單?基本上相當於this perl problem,但在Python中。蟒蛇機械化 - 提交自定義表格
2
A
回答
5
(注:此想出了最近一次事實上,我現在的工作)
這似乎工作:
br.open(URL)
res = mechanize._form.ParseString(FORM_HTML, BASE_URL)
br.form = res[1]
#continue as if the form was on the page and selected with .select_form()
br['username'] = 'foo'
br['password'] = 'bar'
br.submit()
URL
是訪問的網站的完整URL。 BASE_URL
是URL是在目錄中。FORM_HTML
是具有form
元素的任何HTML,例如:
<form method='post' action='/login.aspx'>
<input type='text' name='username'>
<input type='text' name='password'>
<input type='hidden' name='important_js_thing' value='processed_with_python TM'>
</form>
出於某種原因,mechanize._form.ParseString
回報兩種形式。第一個請求是對基本URL的GET
請求,沒有輸入;第二,從FORM_HTML
正確解析的形式。
0
解析頁面,提取你想要的元素,改造頁面,並將它們注入機械化。
對於我工作的項目,我不得不使用模擬瀏覽器,發現機械化在表單處理上非常差。它會從JavaScript塊中抽取未解釋的元素並死亡。我不得不寫一個解決方法,使用BeautifulSoup去除所有可能導致它在到達表單解析器之前死掉的位。
您可能會也可能不會遇到這個問題,但需要牢記。我最終放棄了機械化方法,並與Selenium一起前往。它的表單處理程序是非常優越的,它可以處理JS。它有問題(瀏覽器增加了一層複雜性),但我發現它更容易處理。
相關問題
- 1. 蟒蛇機械化 - 不能提交登錄表單
- 2. 蟒蛇機械化JavaScript提交按鈕的問題!
- 3. 提交的蟒蛇請求機械化爲JavaScript
- 4. 機械化提交
- 5. 蟒蛇機械化會議未保存
- 6. 蟒蛇的機械化將不會正確地解析表格
- 7. 如何使用jquery ajax提交表單進行機械化登錄? (蟒蛇)
- 8. 蟒蛇機械化奇.read()輸出
- 9. Python機械化 - 提交表單兩次
- 10. 使用機械化提交表單(Python)
- 11. 使用機械化提交表單(PubChem)
- 12. 機械化 - 添加到表單提交
- 13. 提交web表單蟒蛇
- 14. 用python機械化提交嵌套表格
- 15. Perl WWW ::使用代理的機械化,不能提交表格
- 16. 機械化 - 提交表單沒有點擊提交按鈕
- 17. Python機械化單擊提交多個提交表單
- 18. 蟒蛇機械化檢索大於1GB的文件
- 19. 與Python提交數據機械化
- 20. 機械化再次提交下一頁
- 21. 機械化發佈2提交
- 22. 如何使蟒蛇機械化忽略下拉約束
- 23. 在機械化
- 24. 機械化開放的javascript鏈接蟒蛇
- 25. 蟒蛇:模塊沒有屬性機械化
- 26. 機械化CheckBox控件不工作蟒蛇
- 27. 你如何訪問行中的HTML表單usibg蟒蛇表機械化
- 28. 無需使用提交按鈕即可提交,機械化
- 29. 機械化Javascript
- 30. Python中的機械化 - 提交後重定向不工作
老兄,如果可以的話,我會給你+100。你怎麼解決這個問題的?網絡上的其他人都沒有提出這個問題,許多人被迫放棄了這個解決方案。 – 2013-05-21 20:17:33