无法在ASP.NET页面上使用Python的Mechanize选择下拉框中的项目
我有一个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把页面上的所有东西都当成了一个大表单。如果真是这样,我该怎么获取下拉框里的选项并提交呢?
如果你需要更多信息,请告诉我。
谢谢。
1 个回答
0
页面上只有一个表单。你想要的是一些控件。试试这个:
form = browser.forms()[0]
control = form.find_control(name="ctl00$SPWebPartManager1$g_9bdf5859_9c73_4144_8b6a_9a3b3df417d5$ctl01$ddlBrand")