1
我用机械化连接网站。该网站使用JavaScript创建自定义表单,并在创建后提交。我怎样才能做到与机械化相同,即:创建一个表单,添加与网站的javascript相同的输入元素,并提交它?蟒蛇机械化:创建并提交表单
我用机械化连接网站。该网站使用JavaScript创建自定义表单,并在创建后提交。我怎样才能做到与机械化相同,即:创建一个表单,添加与网站的javascript相同的输入元素,并提交它?蟒蛇机械化:创建并提交表单
这似乎工作:
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
回报两种形式。第一个请求是对基本URL的GET
请求,没有输入;第二,从FORM_HTML
正确解析的形式。
查看源代码,机械化总是为任何未嵌套在'
你读过这个吗?:http://search.cpan.org/~petdance/WWW-Mechanize-1.66/lib/WWW/Mechanize/FAQ.pod#JavaScript – sgallen
该网站的JavaScript最终构造了一个带参数的URL提交它以获得结果。是不是很容易解决这个最终阶段,并在直接的Python脚本中重构这一步骤,而不是试图模仿中间JavaScript阶段? – gauden
@sgallen他不想解析和执行js代码,他想模仿它的功能。至少这是我的理解... – jadkik94