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

时间:2014-09-17 20:12:42

标签: python html web-scraping mechanize web-mining

我正在使用Python的机械化将项目添加到亚马逊购物车中。在项目的产品页面上,您可以在表单的下拉菜单中选择数量,然后提交添加到购物车。

下拉菜单允许您选择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'

1 个答案:

答案 0 :(得分:0)

似乎即使我尝试手动输入大于30的数字,它也不允许我这样做。你是肯定的,它允许高达999?也许30是最大订单量?