Не могу понять, как использовать Mechanize with Python для выбора элементов из выпадающего списка на странице ASP.NET - PullRequest
0 голосов
/ 01 декабря 2011

У меня есть страница ASP.NET (расположена здесь: http://www.kraftrecipes.com/Products/ProductMain.aspx), в которой есть выпадающий список различных брендов продуктов питания. Я пытаюсь использовать Mechanize в Python, чтобы я мог нажимать на каждый элемент в списке перейдите на страницу со списком продуктов и, в конце концов, используйте 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 голосов
/ 01 декабря 2011

На странице есть только одна форма.То, что вы хотите, это контроль.Попробуйте:

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