如何使用 python 填写和提交表格
How to fill and submit a form using python
我在 mechanize 模块的帮助下填写网页表格,但是当我 运行 我的代码时出现错误。
我只想填表提交成功
我的尝试:
来自此 stack answer
的代码片段
import re
from mechanize import Browser
username="Bob"
password="admin"
br = Browser()
# Ignore robots.txt
br.set_handle_robots( False )
# Google demands a user-agent that isn't a robot
br.addheaders = [('User-agent', 'Firefox')]
br.open("https://fb.vivoliker.com/app/fb/token")
br.select_form(name="order")
br["u"] = [username]
br["p"]=[password]
response = br.submit()
输出:
错误(FormNotFoundError)
但是我应该在 br.select_form()
中输入什么名称,因为当我看到网页的源代码时,他们没有为该表单设置名称属性。
Html 网页表格源码
<div class="container">
<form ls-form="fb-init">
<input type="hidden" name="machine_id">
<div class="form-group row">
<input id="u" type="text" class="form-control" placeholder="Facebook Username / Id / Email / Mobile Number" required="required">
</div>
<div class="form-group row">
<input id="p" type="password" class="form-control" placeholder="Facebook Password" required="required">
</div>
<div class="form-group row mt-3">
<button type="button" id='generating' class="btn btn-primary btn-block" onclick="if (!window.__cfRLUnblockHandlers) return false; get()" data-cf-modified-4e9e40fa9e78b45594c87eaa-="">Get Access Token</button>
</div>
<div ls-form="event"></div>
</form>
预期输出:
我的表格应使用我提供的值提交。
请参阅下面给出的此网页的 javascript。
我想填写并提交此网页的表格:
Web page source
我相信您想要 select 的形式是 ls-form=fb-init
但是,由于 mechanize 模块需要将连字符替换为下划线才能将 HTML attrs 转换为关键字参数,因此您需要这样写:
br.select_form(ls_form='fb-init')
澄清一下,select 的正确形式没有命名为 'order',形式命名为 'fb-init',它是一个 ls-form(写作 'ls_form' 带下划线)。所以随着变化,应该是这样的:
import re
from mechanize import Browser
username="Bob"
password="admin"
br = Browser()
# Ignore robots.txt
br.set_handle_robots( False )
# Google demands a user-agent that isn't a robot
br.addheaders = [('User-agent', 'Firefox')]
br.open("https://fb.vivoliker.com/app/fb/token")
br.select_form(ls_form='fb-init')
然后从那里继续。
我在 mechanize 模块的帮助下填写网页表格,但是当我 运行 我的代码时出现错误。 我只想填表提交成功
我的尝试:
来自此 stack answer
的代码片段import re
from mechanize import Browser
username="Bob"
password="admin"
br = Browser()
# Ignore robots.txt
br.set_handle_robots( False )
# Google demands a user-agent that isn't a robot
br.addheaders = [('User-agent', 'Firefox')]
br.open("https://fb.vivoliker.com/app/fb/token")
br.select_form(name="order")
br["u"] = [username]
br["p"]=[password]
response = br.submit()
输出: 错误(FormNotFoundError)
但是我应该在 br.select_form()
中输入什么名称,因为当我看到网页的源代码时,他们没有为该表单设置名称属性。
Html 网页表格源码
<div class="container">
<form ls-form="fb-init">
<input type="hidden" name="machine_id">
<div class="form-group row">
<input id="u" type="text" class="form-control" placeholder="Facebook Username / Id / Email / Mobile Number" required="required">
</div>
<div class="form-group row">
<input id="p" type="password" class="form-control" placeholder="Facebook Password" required="required">
</div>
<div class="form-group row mt-3">
<button type="button" id='generating' class="btn btn-primary btn-block" onclick="if (!window.__cfRLUnblockHandlers) return false; get()" data-cf-modified-4e9e40fa9e78b45594c87eaa-="">Get Access Token</button>
</div>
<div ls-form="event"></div>
</form>
预期输出: 我的表格应使用我提供的值提交。 请参阅下面给出的此网页的 javascript。 我想填写并提交此网页的表格: Web page source
我相信您想要 select 的形式是 ls-form=fb-init
但是,由于 mechanize 模块需要将连字符替换为下划线才能将 HTML attrs 转换为关键字参数,因此您需要这样写:
br.select_form(ls_form='fb-init')
澄清一下,select 的正确形式没有命名为 'order',形式命名为 'fb-init',它是一个 ls-form(写作 'ls_form' 带下划线)。所以随着变化,应该是这样的:
import re
from mechanize import Browser
username="Bob"
password="admin"
br = Browser()
# Ignore robots.txt
br.set_handle_robots( False )
# Google demands a user-agent that isn't a robot
br.addheaders = [('User-agent', 'Firefox')]
br.open("https://fb.vivoliker.com/app/fb/token")
br.select_form(ls_form='fb-init')
然后从那里继续。