如何使用python填写和提交表单

如何解决如何使用python填写和提交表单

我正在使用机械化模块填充网页的表单,但是运行代码时出现错误。 我只想填写表格并成功提交。

我的尝试:

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

解决方法

我相信您要选择的表单是ls-form=fb-init

但是,由于机械化模块需要用下划线替换连字符才能将HTML attrs转换为关键字参数,因此您需要这样编写:

br.select_form(ls_form='fb-init')

为澄清起见,正确选择的表单未命名为“ order”,该表单命名为“ fb-init”,并且是ls表单(写有下划线的“ 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')

然后从那里继续。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?