web-dev-qa-db-ja.com

Python:urllibまたはurllib2のボタンをクリックする

Pythonでボタンをクリックしたいのですが、フォームの情報はWebページによって自動的に入力されます。ボタンにリクエストを送信するためのHTMLコードは次のとおりです。

INPUT type="submit" value="Place a Bid">

どうすればこれを行うことができますか? urllibまたはurllib2だけでボタンをクリックすることは可能ですか?それとも、機械化やツイルのようなものを使用する必要がありますか?

9
Dan Doe

フォームターゲットを使用して、次のような投稿データとして入力を送信します。

<form target="http://mysite.com/blah.php" method="GET">
    ......
    ......
    ......
    <input type="text" name="in1" value="abc">
    <INPUT type="submit" value="Place a Bid">
</form>

Python:

# parse the page HTML with the form to get the form target and any input names and values... (except for a submit and reset button)
# You can use XML.dom.minidom or htmlparser
# form_target gets parsed into "http://mysite.com/blah.php"
# input1_name gets parsed into "in1"
# input1_value gets parsed into "abc"

form_url = form_target + "?" + input1_name + "=" + input1_value
# form_url value is "http://mysite.com/blah.php?in1=abc"

# Then open the new URL which is the same as clicking the submit button
s = urllib2.urlopen(form_url)

次のようにHTMLを解析できます HTMLParser

また、投稿データを次のようにurlencodeすることを忘れないでください。

rllib.urlencode(query)

10
chown

IronWatin -- https://github.com/rtyler/IronWatin を確認してフォームに入力し、コードを使用してボタンを「クリック」することをお勧めします。

2
David Viljoen

Urllib.urlopenを使用すると、フォームの値をデータパラメータとして、フォームタグで指定されたページに送信できます。ただし、これではブラウザが自動化されないため、最初に別の方法でフォームの値を取得する必要があります。

1
imm