私は機械化でログインが必要なページに接続しています。それは正面ページ上のいくつかのJavaScriptを使用して機械化をまっすぐに難しくしています。私はログインするためにどのようなフォームを提出しなければならないかを知っています。毎回同じようにjsによって常に生成されるものです。ページにないカスタムフォームを送信するだけで機械化するにはどうすればよいですか?基本的にthis perl problemと同等ですが、Pythonではpython mechanize - カスタムフォームを送信
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
二つの形式を返しますmechanize._form.ParseString
何らかの理由により、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>
です。最初は、入力なしでベースURLへのGET
要求です。 2番目は、適切に解析された形式FORM_HTML
です。
0
ページを解析して、必要な要素を抽出し、ページを改訂して機械化に戻します。
私が取り組んだプロジェクトでは、シミュレートされたブラウザを使用しなければならず、Mechanizeがフォーム処理に非常に貧弱であることがわかりました。 Javascriptのブロックから解釈されない要素をヤンクして死ぬだろう。私は、それがフォームパーサーに到達する前に死ぬ原因となるすべてのビットを取り除くためにBeautifulSoupを使用した回避策を書く必要がありました。
あなたはその問題に遭遇するかもしれないし、そうでないかもしれないが、心に留めておくべきことだ。私は最終的にMechanizeアプローチを放棄して終了し、Seleniumと一緒に行きました。フォームハンドラははるかに優れており、JSを処理することができます。それは問題を抱えています(ブラウザには複雑さが加わります)が、作業がはるかに簡単です。
関連する問題
- 1. Mechanize(Python)でフォームを送信
- 2. プラグインでカスタムフォームを送信しますか?
- 3. python mechanizeでログイン
- 4. python mechanize HTTPエラー100
- 5. Python Mechanizeモジュールの暗号化
- 6. PYTHON Mechanizeログインフォームクラス
- 7. WordPressカスタムフォームは管理パネルでデータビューを送信しますか?
- 8. Braintreeインテグレーション - カスタムフォームはノンスを送信しません
- 9. Outlookカスタムフォーム - イベント送信時にメッセージを編集する
- 10. python mechanize:フォームを作成して提出する
- 11. WordPressページのカスタムフォームが送信/再表示されない
- 12. PythonのMechanizeの - ログインフォーム
- 13. Python - mechanize/requests getタイトル
- 14. Ruby Mechanizeの送信ボタンが正しく動作しない
- 15. Python Mechanize選択フォームFormNotFoundError
- 16. WWW :: Mechanizeを使ってHTMLにないフォームを送信するには?
- 17. 前にjqgridのカスタムフォームのカスタムボタンにイベントを送信できません
- 18. python:サブプロセスでコマンドを送信
- 19. pythonでメールを送信
- 20. Pythonでhttpヘッダーを送信
- 21. PythonでCTSフレームを送信
- 22. PythonでHTTPポストを送信
- 23. なぜweb2pyのカスタムフォームですか、{{form.custom.submit}}がなくても送信しますか?
- 24. python、beautifulsoup、mechanizeでドロップダウンを選択する
- 25. Office365 pythonライブラリ `python-o365`でメールを送信
- 26. Mechanize 2.0のクッキー
- 27. Python on Heroku - バックグラウンドワーカーに送信
- 28. 投稿の送信リクエストpython
- 29. Pythonの機械化でHtmlフォームを送信する際の問題
- 30. Python/MechanizeでECONNRESETから回復する
私はできればあなたに+100を与えるだろう。これはどうやって分かりましたか? Web上の他の誰もこれを思いついた人はいません。多くの人がこの解決策なしであきらめてしまいました。 –
@mh ..:ハハ、それを聞いてうれしい!私は束を機械化して使用したので、私はちょうどソースコードを掘り下げて、たくさんのものを試して、やっとそれを動作させたと思います... – Claudiu