Python Mechanize - 如何在下拉菜单中提交未列出的值

标签 python html web-scraping mechanize web-mining

我正在使用 Python 的 Mechanize 将商品添加到亚马逊购物车中。在项目的产品页面上,您在表单的下拉菜单中选择数量并提交添加到购物车。

下拉菜单允许您选择从 1 到 30 的数量。

以下代码适用于添加数量为 1 到 30 的任何产品。但是,当我尝试添加大于 30 的数量时,即当下拉菜单中未具体表示该值时,它不起作用。

下拉菜单中的最大值 30 是人为限制。事实上,您可以毫无问题地添加多达 999 个项目(使用 Firebug 提交大于 30 的值证实了这一点)。

我的问题 - 如何更改以下代码以成功提交未在下拉菜单中列为值的数量?

import mechanize

br = mechanize.Browser()
br.set_handle_robots(False)
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]

# Open an Amazon product page
br.open('http://www.amazon.com/gp/product/B005KOKFR4/')

# Add to Cart is form [1]
br.select_form(nr=1)

# Change quantity
br.form['quantity'] = ['31']

# Submit form
br.submit()

print br.response().read()

如果数量是 1-30,以上代码有效。当数量为31或更多时,错误为:

mechanize._form.ItemNotFoundError: insufficient items with name '31'

最佳答案

似乎即使我尝试手动输入大于 30 的数字也不允许我这样做。您确定最多允许 999 吗?也许 30 是最大订单量?

关于Python Mechanize - 如何在下拉菜单中提交未列出的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25899531/

相关文章:

python - Django 自定义信号与常规函数

python - bokeh - 使用 customJS 绘制不同的列

c# - HttpClient 没有获得完整的网站 html 源代码

python - 如何提取、访问和使用所选子列表索引处列表的所有值?

python - 使用 Python API 运行 Ansible playbook

php - 单击按钮后显示列表项行

javascript - 防止用户使用 jquery 或 javascript 重新加载页面

javascript - 如何从 XHTML 中的 Document.Write 中删除 Div 和 Img 标签

pandas - 使用 selenium 或 beautifulsoup 从站点上抓取表

python - 通过 selenium 从 python 中的 html 表的第二列的每第二行获取 pdf 文件