Python: нажатие кнопки с помощью urllib или urllib2 - PullRequest
9 голосов
/ 03 октября 2011

Я хочу нажать кнопку с Python, информация для формы автоматически заполняется веб-страницей.HTML-код для отправки запроса на кнопку:

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

Как мне поступить?Можно ли нажать кнопку только с urllib или urllib2?Или мне нужно будет использовать что-то вроде механизации или твила?

Ответы [ 3 ]

10 голосов
/ 03 октября 2011

Используйте цель формы и отправьте любой ввод в качестве данных поста, как это:

<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

И не забывайте кодировать любые почтовые данные с помощью:

urllib.urlencode (запрос)

2 голосов
/ 03 октября 2011

Возможно, вы захотите взглянуть на IronWatin - https://github.com/rtyler/IronWatin, чтобы заполнить форму и «нажать» кнопку, используя код.

1 голос
/ 03 октября 2011

Используя urllib.urlopen, вы можете отправить значения формы в качестве параметра данных на страницу, указанную в теге формы. Но это не будет автоматизировать ваш браузер для вас, поэтому вам придется сначала получить значения формы другим способом.

...