我有一个ASP.NET页面(位于此处http://www.kraftrecipes.com/Products/ProductMain.aspx),其中包含各种食品品牌的下拉框。我正在尝试在Python中使用Mechanize,因此我可以单击列表中的每个项目,转到产品列表页面,最后使用BeautifulSoup来获取产品信息。这是一些HTML:
<fieldset class="pulldownfieldset">
<label>...or use the pulldown menu below.</label>
<select name="ctl00$SPWebPartManager1$g_9bdf5859_9c73_4144_8b6a_9a3b3df417d5$ctl01$ddlBrand"
id="ctl00_SPWebPartManager1_g_9bdf5859_9c73_4144_8b6a_9a3b3df417d5_ctl01_ddlBrand"
onkeypress="return doSubmit(event, 'ctl00_SPWebPartManager1_g_9bdf5859_9c73_4144_8b6a_9a3b3df417d5_ctl01_btnBrandGo');">
<option value="322">Arrowroot</option>
<option value="1">A.1. Steak Sauces and Marinades</option>
etc.
起初我只是尝试选择表单,但Python抱怨说它不存在。
browser.select_form("ctl00$SPWebPartManager1$g_9bdf5859_9c73_4144_8b6a_9a3b3df417d5$ctl01$ddlBrand")
当我这样做时:
browser.select_form(nr=0)
print browser.form
我得到了所有表单的列表,但是执行browser.form.name
会产生“aspnetForm”,这让我相信Mechanize会将页面上的所有内容视为一个大表单。如果是这样,我如何在下拉框中选择并提交它们?
如果您需要更多信息,请与我们联系。
感谢。
答案 0 :(得分:0)
页面上只有一个表单。你想要的是控制。 尝试:
form = browser.forms()[0]
control = form.find_control(name="ctl00$SPWebPartManager1$g_9bdf5859_9c73_4144_8b6a_9a3b3df417d5$ctl01$ddlBrand")