无法弄清楚如何使用Mechanize with Python从ASP.NET页面的下拉框中选择项目

时间:2011-12-01 02:34:00

标签: asp.net python html 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 :(得分:0)

页面上只有一个表单。你想要的是控制。 尝试:

form = browser.forms()[0]
control = form.find_control(name="ctl00$SPWebPartManager1$g_9bdf5859_9c73_4144_8b6a_9a3b3df417d5$ctl01$ddlBrand")