Python の機械化を使用して、商品を Amazon ショッピング カートに追加しています。アイテムの製品ページで、フォームのドロップダウン メニューで数量を選択し、[カートに追加] を送信します。
ドロップダウン メニューでは、数量を 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'