1
私は機械化したウェブサイトとインターフェースしています。このウェブサイトはjavascriptを使用してカスタムフォームを作成し、それを作成した後に送信します。どのように私は機械化、すなわち:フォームを作成し、サイトのjavascriptと同じ入力要素を追加し、それを提出すると同じことを行うことができますか?python mechanize:フォームを作成して提出する
私は機械化したウェブサイトとインターフェースしています。このウェブサイトはjavascriptを使用してカスタムフォームを作成し、それを作成した後に送信します。どのように私は機械化、すなわち:フォームを作成し、サイトのjavascriptと同じ入力要素を追加し、それを提出すると同じことを行うことができますか?python mechanize:フォームを作成して提出する
これは動作するようです:
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
です。
ソースコードを見ると、mechanizeは、 '
あなたはこれを読んでいますか?:http://search.cpan.org/~petd/WWW-Mechanize-1.66/lib/WWW/Mechanize/FAQ.pod#JavaScript – sgallen
サイトのjavascriptは、最終的にパラメータとURLを構成します。それを提出して結果を得る。この最終段階を試して、中間のJavaScript段階を模倣するのではなく、ストレートPythonスクリプトでその手順を再構築する方が簡単ではないですか? – gauden
@sgallen彼はjsコードを解析して実行したくないので、彼はその機能を模倣したいと思っています。少なくともそれは私が理解したものです... – jadkik94