我尝试使用mechanize登录以下表单。
<div class="container">
<form class="form-signin" id="form_login">
<h2 class="form-signin-heading"><center>GReAT Sinkhole Database</center></h2>
<div id="form_login_error_box" class="form_error_box"></div>
<label for="form_username" class="sr-only">Username</label>
<input type="text" id="form_username" class="form-control" placeholder="Username" required autofocus>
<label for="form_password" class="sr-only">Password</label>
<input type="password" id="form_password" class="form-control" placeholder="Password" required>
<button class="btn btn-lg btn-primary btn-block" type="submit">Sign in</button>
</form>
</div>
机械化浏览器方法br.submit()
和br.click()
没有提交表单,我也没有检索到想要的HTML。
这是代码
browser.select_form(nr = 0)
browser.form.set_value(login_user, nr=0)
browser.form.set_value(Loginpwd, nr=1)
ff = browser.submit()
print " title ##" + str(browser.title())
print ff.read()
应该是什么?
答案 0 :(得分:2)
<form>
元素没有method
或action
属性。
没有方法的表单的默认行为是通过GET请求提交,并且由于没有定义操作,我猜他们会提交到页面的URL(HTML规范没有指定如果发生的事情,如果没有定义任何行动)。登录表单不太可能像这样。
因此,此表单似乎可能是通过javascript提交的,并且不适合使用Mechanize进行访问。
答案 1 :(得分:0)
我刚刚解决了这个问题,因为form.submit似乎没有效果
datat = {'username': 'ADMIN','password':'ADMIN'}
#Encode the parameters
data = urllib.urlencode(datat)
#Submit the form (POST request).
print "POST"
browser.open(post_url,data)
print "POSTED"
print browser.open(url_to_get).read()