【问题标题】:robobrowser select change valuerobobrowser 选择更改值
【发布时间】:2015-05-23 21:49:51
【问题描述】:

我正在尝试将 <select> 框的值从 10 更改为 500。这是 HTML:

    <select id="count" name="count">
    	<option value="10">10</option>
    	<option value="20">20</option>
    	<option value="50">50</option>
    	<option value="100">100</option>
    </select>

表单中没有列出'500' 选项,但如果您在浏览器中更改 HTML,Web 服务器将接受它。

我的 Python 代码不起作用:

browser = RoboBrowser()
browser.open(link)

form = browser.get_form(action=re.compile(r'loginshop'))
form['login'] = '/shop//loginshop.php'
form['user'] = username
form['pw'] = passwort
browser.submit_form(form)
# Search the Website
#Suche = str(input("Suchen Sie nach einem Produkt: "))
formSearch = browser.get_form(action=('liste.php'))
formSearch['suche'].value = self.suche
browser.submit_form(formSearch)

#### ANZEIGEN Artikel max 500
formSortzahl = browser.get_form(id='sort')
formSortzahl['count'].value = '100'

我得到错误: 'NoneType' 对象不可下标

当我删除它时:它可以工作。

Sortzahl = browser.get_form(id='count')
formSortzahl['count'].value = '100'

【问题讨论】:

  • 你试过formSortzahl['count'] = '10'了吗?
  • 您的 Python 代码不起作用,因为 ????? 不是有效的 Python 语法。你能分享一下你实际尝试了什么吗?
  • 我尝试使用 robobrowser 浏览网站,现在我需要将值更改为 500。
  • 但是 500 不是列表中的有效选项。
  • 是的,但是当您更改值时它会起作用。服务器接受!问题是我不知道如何使用 robobrowser 在 python 中更改它。

标签: python select robobrowser


【解决方案1】:

您可以简单地通过设置.value 属性来设置任何选择框的值:

formSortzahl = browser.get_form(id='sort')
formSortzahl['count'].value = '100'

注意你需要使用一个字符串;根据&lt;option&gt; value 属性和标签(&lt;option&gt; 标签中包含的文本)验证该值。对于您的示例,这意味着该值必须是'10''20'、@987654330 之一@ 或'100'

您不能轻易地覆盖 HTML 提供的选项,如果没有表单的 mucking with the internal representation 则更是如此。我不建议你这样做。

如果你真的必须,那么考虑到以下代码依赖于当前版本的robobrowser。它访问MultiOptionField.options attribute 以向选择添加额外的“选项”:

formSortzahl['count'].options.append('500')  # include one more option
formSortzahl['count'].value = '500'

该属性没有记录,因此项目的开发人员仍然可以选择更改它或更改该属性的行为。

【讨论】:

  • formSortzahl = browser.get_form(id='sort') formSortzahl['count'].value = '100' 获取以下错误:'NoneType' 对象不可下标
  • @overView:你在这里没有给我足够的信息;如果找不到表单(不存在&lt;form id="sort"&gt;),您会收到该错误。在这种情况下,browser.get_form(id='sort') 返回None,所以下一行尝试执行None['count'],但这不起作用。
  • 我也遇到了同样的问题。尝试多次运行 RoboBrowser.get_form() 时出现 NoneType 对象错误。我不确定为什么会这样。第一次调用它会工作,如果第二次调用它会失败。
猜你喜欢
  • 2016-02-26
  • 1970-01-01
  • 2020-10-20
  • 2021-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-07
  • 1970-01-01
相关资源
最近更新 更多