1

我正在用机械化连接一个网站。该网站使用 javascript 创建自定义表单并在创建后提交。我怎样才能对机械化做同样的事情,即:创建一个表单,添加与网站的javascript相同的输入元素,然后提交?

4

1 回答 1

1

这似乎有效:

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返回两种形式。第一个是GET对基本 URL 的请求,没有输入;第二,正确解析的形式来自FORM_HTML.

于 2012-05-04T19:51:46.200 回答