python - 使用 robobrowser 设置普通复选框

标签 python beautifulsoup robobrowser

我正在努力使用robobrowser检查一个简单的复选框以丢弃mailman中的所有消息。

form['discardalldefersp'].options

返回['0'],两者都不返回

form['discardalldefersp'].value= True

也不

form['discardalldefersp'].value = '1'

提供结果。我只收到“ValueError:在字段中找不到选项 1”

如何设置复选框?

我的整个代码如下:

import robobrowser

pw = '<password>'

browser = RoboBrowser(history=True)
browser.open('<mailmanlist>')

form = browser.get_form(action='/mailman/admindb/<listname>')

form['adminpw'].value = pw
browser.submit_form(form)

form = browser.get_form(action='<listurl>')

form['discardalldefersp'].value = '1'

HTML 如下(德语):

<HTML>
<HEAD>
<LINK REL="SHORTCUT ICON" HREF="/images/mailman/mm-icon.png">
<META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<TITLE>Administrative Datenbank</TITLE>
</HEAD>
<BODY bgcolor="white"
dir="ltr">
<h2>Administrative Anfragen für Liste: <em>foobar</em></h2><!-- based on en 2.0 / StD-->
Diese Seite zeigt eine &Uuml;bersicht der gegenw&auml;rtigen administrativen
Anfragen f&uuml;r die <a href="https://lists.server.de/mailman/admin/foobar"><em>foobar</em>
Mailingliste</a>, die auf Ihre Genehmigung warten. Als erstes sehen Sie eine
Liste allf&auml;lliger Abonnement- und K&uuml;ndigungsanfragen, gefolgt von
eventuellen Nachrichten, die Ihre Genehmigung erfordern, und daher gestoppt
wurden.

<p>Bitte w&auml;hlen Sie f&uuml;r jede Anfrage die zu treffende Ma&szlig;nahme
aus, und klicken Sie auf den <b>Alle Daten senden</b> Knopf, wenn sie fertig
sind. Eine <a href="https://lists.server.de/mailman/admindb/foobar?details=instructions">detaillierte Anleitung</a> ist ebenfalls
verf&uuml;gbar.

<p>Sie k&ouml;nnen sich auch <a href="https://lists.server.de/mailman/admindb/foobar?details=all">Details</a> zu allen
gestoppten Nachrichten anzeigen lassen.

<FORM action="https://lists.server.de/mailman/admindb/foobar" method="POST" >
<center>
<INPUT name="submit" type="SUBMIT" value="Alle Daten senden" ></center>
<center> 
<INPUT name="discardalldefersp" type="CHECKBOX" value="0" >&nbsp;Alle mit     <em>Verschieben</em> markierten Nachrichten verwerfen.
</center>
<hr>
<center>

<h2>Zurückgehaltene Nachrichten</h2></center>

...

</FORM>

enter image description here

最佳答案

我有一个类似的带有单选按钮的错误消息。尝试将“1”或 True 选项添加到 Robobrowser 字段 discardalldefersp 并查看是否可以解决问题:

form['discardalldefersp'].options = ['1']
form['discardalldefersp'].value = '1'

或者使用 True 选项:

form['discardalldefersp'].options = [True]
form['discardalldefersp'].value = True

这解决了我收到错误消息的问题,但表单运行不佳,但我认为是网站运行不佳。

关于python - 使用 robobrowser 设置普通复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39547879/

相关文章:

python - 如何从 wunderground 中抓取动态表格

php - 使用 PHP 和计时器启动和终止后台 python 脚本

python - BeautifulSoup:如何获取嵌套的 div

python-3.x - 无法使用 robobrowser 提交表单。无效提交错误

python - 我怎么能刮这个?

php - 与 PHP 和 Python 共享 Memcache

python - ursina 窗口在 mac OS big sur 上打不开

Python:使用BeautifulSoup读取具有相同属性的多个元标记内容?

python - 如何使用 Beautiful soup 在 <span> 标签中搜索特定的 "class=id"类型属性?