如何使用 Python 在表单中选择选项?

2024-05-30

我想知道如何以格式如下的形式选择选项

  <td align="left">
                  <select name="FORM1" id="FORM1" multiple="multiple" size="5">
                      <option value="Value1">Value1</option>
                      <option value="Value2">Value2</option>
                  </select>
  </td>

现在,我正在使用 mechanize 连接到网站并遍历到所需的页面。该页面有多种表格,如FORM1、FORM2、FORM3等,并带有选项。我想选择(启用)Value1,然后告诉 mechanize 实例点击提交按钮。哪种方法可以快速启用基于表单名称的选项?


以下是一些帮助您入门的基本用法示例:

>>> import mechanize
>>> br = mechanize.Browser()
>>> br.open('http://www.w3schools.com/html/html_forms.asp')

表格有一个name属性;有时它是空的:

>>> [f.name for f in br.forms()]
['searchform', None, None, None, None, 'input0']

表单具有一系列控件;控件也有名称:

>>> forms = [f for f in br.forms()]
>>> forms[1].controls[0].name
'firstname'
>>> [c.name for c in forms[3].controls]
['sex']

您可以获得控件中的项目列表:

>>> forms[3].controls[0].get_items()
[<Item name='male' id=None type='radio' name='sex' value='male'>, <Item name='female' id=None type='radio' name='sex' value='female'>]

对于单选按钮,您必须进行单一选择:

>>> forms[3]['sex'] = ['male']

但选择必须在列表中:

>>> forms[3]['sex'] = 'male'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Library/Python/2.6/site-packages/mechanize/_form.py", line 2782, in __setitem__
    control.value = value
  File "/Library/Python/2.6/site-packages/mechanize/_form.py", line 1977, in __setattr__
    self._set_value(value)
  File "/Library/Python/2.6/site-packages/mechanize/_form.py", line 1985, in _set_value
    raise TypeError("ListControl, must set a sequence")
TypeError: ListControl, must set a sequence

对于复选框,您可以进行多项选择:

>>> [(c.name, c.get_items()) for c in forms[4].controls]
[('vehicle', [<Item name='Bike' id=None type='checkbox' name='vehicle' value='Bike'>, <Item name='Car' id=None type='checkbox' name='vehicle' value='Car'>])]
>>> forms[4]['vehicle'] = ['Bike', 'Car']

您可以找到更多信息here http://wwwsearch.sourceforge.net/mechanize/forms.html(链接盗自马特·亨佩尔 https://stackoverflow.com/questions/6359817/how-do-you-select-choices-in-a-form-using-python/6360068#6360068 :).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Python 在表单中选择选项? 的相关文章

  • 如何在不在 iPython 笔记本中使用离线模式下的plotly进行绘图?

    我需要使用plotly绘制我的数据 但是这段代码没有给我任何结果 我显示我的数据 但没有任何数字 import plotly graph objs as go from plotly offline import download plot
  • 为什么Python中的打印需要三个撇号?

    我正在用 Python 3 3 2 制作这个毕达哥拉斯定理计算器 我打印了几行 以便我可以制作图表 print Welcome to the Pythagoras Theorem Calculator powered by Python p
  • 设置面积图 openpyxl 的透明度(alpha)

    我想使用 openpyxl 设置面积图背景的透明度 我的图表代码是 from openpyxl drawing fill import PatternFillProperties ColorChoice c2 AreaChart c2 gr
  • Python2 math.fsum 不准确?

    我正在使用 python2 数学模块来计算 fsum 的总和 据我所知 0 1通常不能存储二进制 据我了解 math fsum 应该以某种方式解决这个问题 import math math fsum 0 0 0 1 0 1 math fsu
  • 如何在 Pandas 中用多个唯一字符串替换重复值?

    import pandas as pd import numpy as np data Name Tom Tom Jack Terry Age 20 21 19 18 df pd DataFrame data 假设我有一个如下所示的数据框
  • 尝试将行附加到按对象分组中的每个组时出现奇怪的行为

    这个问题是关于一个函数在应用于两个不同的数据帧时以意想不到的方式表现的 更准确地说 是 groupby 对象 要么是我遗漏了一些明显错误的东西 要么是 pandas 中存在错误 我编写了以下函数 将一行附加到 groupby 对象中的每个组
  • 在ubuntu中安装pyinterval

    我正在尝试安装 python 库 pyinterval 它需要 crlibm C 标头 我已安装该标头 没有错误 但似乎是问题的根源 当我跑步时 sudo easy install pyinterval 我得到以下信息 Searching
  • 从两个列表中查找总和等于 x 的 2 个数字的最快方法

    我的代码 n 3 a1 0 b1 10 a2 2 b2 2 if b1 gt n b1 n if b2 gt n b2 n diap1 x for x in range a1 b1 1 diap2 x for x in range a2 b
  • Tastypie:GET 的身份验证和 POST 的匿名

    我使用 Django Tastypie 来管理我的用户集合 是否可以允许匿名用户在 API 中发布 在某个端点创建新用户时 并限制经过身份验证的用户仅获取自己的用户 而不是所有用户 感谢您的帮助 我发现最简单的事情就是对我正在使用的身份验证
  • OSMNX - 边缘的哪个“部分”被认为是最近的

    我正在使用 OSMNX 中的 returned edges 函数 我不清楚在进行此计算时使用边缘的哪个 部分 它是边缘的任何部分吗 是中间点吗 对于网络中的长边来说 这会产生很大的差异 这取决于您如何参数化该函数 来自nearest edg
  • matplotlib 示例代码不适用于 python 虚拟环境

    我正在尝试在 matplotlib 中显示图像的 x y z 坐标 示例代码 http matplotlib org examples api image zcoord html在全局 python 安装上工作得很好 当我移动光标时 x y
  • 从 paramiko 获取 PID

    我找不到一个简单的答案 我正在使用 paramiko 远程登录并执行多个进程 我需要每个进程的 PID 以便稍后检查它们 paramiko 中似乎没有函数来获取执行命令的 PID 所以我尝试使用以下命令 stdin stdout stder
  • python 使用曲面图和第四个变量的滑块可视化 4d 数据

    如何使用前 3 个变量和第四个变量的 3 维曲面图作为滑块来可视化 4 维数据 从 csv 文件加载 集 我写了一个非常小的示例 重点介绍了实现此目标的方法 import numpy as np import matplotlib pypl
  • 在 SQLAlchemy 中删除父级后删除子级

    我的问题如下 我有两个型号Entry and Tag通过 SQLAlchemy 中的多对多关系链接 现在我想删除所有Tag没有任何对应的Entry后Entry被删除 示例来说明我想要的内容 Entry 1带标签python java Ent
  • 是否可以通过 Python 使用 Cocoa API?

    我想知道是否可以将 Cocoa Apple 的 API 与 Python 一起使用 以便能够运行像这样的任何代码link https developer apple com documentation appkit nsworkspace
  • 使用 Python for PyQt WebEngine 授予对 Cam & Mic 的访问权限

    我正在构建一个从 Python 调用的简单 Web 应用程序 我正在使用下面的代码 加载此页面时 以编程方式授予对摄像头和麦克风的访问权限的最简单方法是什么 我只在网上找到了 C 示例 无法找到在 Python 代码中执行此操作的方法 fr
  • 如何在 Ansible 中更新嵌套变量

    我有一些额外的信息 例如数据库连接详细信息等 存储在 etc ansible facts d environment fact 中 这些可以作为变量使用 例如ansible local environment database name 更
  • MySQL:进行基本搜索

    我的数据库中有一个名称表 我希望对其进行模糊搜索 例如我的数据库包含 Name ID John Smith 1 Edward Smith 2 Gabriel Gray 3 Paul Roberts 4 目前 当我通过 python 搜索数据
  • 在 AWS ec2 实例上使用“sudo pip”时出现错误

    我正在尝试在 aws ec2 实例上运行一个小型 python 代码 需要 pytz 和其他一些包 当我尝试安装 pytz 时 出现一些错误 ec2 user ip 172 31 28 178 pip install pytz Collec
  • 检查Python multiprocessing.Connection 的实例吗?

    Connection对象是在打开时创建的multiprocessing Pipe 然而 尚不清楚如何检查一个对象是否是一个实例Connection 在Python3 3 4 3 3 3 2 中 检测Connection我可以 from mu

随机推荐