简体   繁体   中英

Use mechanize to submit form data

After visiting an url, I get many forms. I want to choose a forms of which bidder is 123456 and reason is seller and then submit the form.

Here is the form list

-----Start0----

<GET http://auctions.search.yahoo.co.jp/search application/x-www-form-urlencoded
  <HiddenControl(auccat=) (readonly)>
  <TextControl(p=)>
  <SubmitControl(<None>=検 索) (readonly)>
  <HiddenControl(tab_ex=commerce) (readonly)>
  <HiddenControl(ei=UTF-8) (readonly)>
  <HiddenControl(fr=auc_item) (readonly)>>
-----End 0----
-----Start1----
<POST http://edit9.auctions.yahoo.co.jp/jp/config/amgr application/x-www-form-urlencoded
  <HiddenControl(aID=k179213060) (readonly)>
  <HiddenControl(bidder=123456) (readonly)>
  <HiddenControl(action=rmwinner) (readonly)>
  <HiddenControl(cc=jp) (readonly)>
  <HiddenControl(hasRunnerUp=1) (readonly)>
  <RadioControl(reason=[seller, winner])>
  <SubmitControl(confirm=蜑企勁) (readonly)>
  <HiddenControl(advance=on) (readonly)>>
-----End 1----
-----Start2----
<POST http://edit9.auctions.yahoo.co.jp/jp/config/amgr application/x-www-form-urlencoded
  <HiddenControl(aID=k179213060) (readonly)>
  <HiddenControl(bidder=xxx) (readonly)>
  <HiddenControl(action=rmwinner) (readonly)>
  <HiddenControl(cc=jp) (readonly)>
  <HiddenControl(hasRunnerUp=1) (readonly)>
  <RadioControl(reason=[seller, winner])>
  <SubmitControl(confirm=蜑企勁) (readonly)>
  <HiddenControl(advance=on) (readonly)>>
-----End 2----
-----Start3----
<POST http://edit9.auctions.yahoo.co.jp/jp/config/amgr application/x-www-form-urlencoded
  <HiddenControl(aID=k179213060) (readonly)>
  <HiddenControl(bidder=xxx) (readonly)>
  <HiddenControl(action=rmwinner) (readonly)>
  <HiddenControl(cc=jp) (readonly)>
  <HiddenControl(hasRunnerUp=1) (readonly)>
  <RadioControl(reason=[seller, winner])>
  <SubmitControl(confirm=蜑企勁) (readonly)>
  <HiddenControl(advance=on) (readonly)>>
-----End 3----
-----Start4----
<p GET http://search.yahoo.co.jp/search application/x-www-form-urlencoded
  <TextControl(p=)>
  <SubmitButtonControl(<None>=) (readonly)>
  <HiddenControl(ei=UTF-8) (readonly)>
  <HiddenControl(fr=usf) (readonly)>>
-----End 4----

How can I do that? Sorry I dont have my own code. Thanks.

.forms() returns a generator of forms, so you need to check each one with a try-except block.

for form in browser.forms():
  try:
    if form.get_value('bidder') == '123456':
      form['reason'] = ['seller']
      form.submit()
      break
  except ControlNotFoundError:
    pass

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM