Python-получение данных из приложения asp.net AJAX - PullRequest
5 голосов
/ 24 апреля 2009

Используя Python, я пытаюсь прочитать значения на http://utahcritseries.com/RawResults.aspx. Я могу читать страницу очень хорошо, но у меня возникают трудности при изменении значения поля со списком годов для просмотра данных за другие годы. Как я могу прочитать данные за годы, отличные от значения по умолчанию 2002 года?

Похоже, что страница отправляет сообщение HTTP после изменения поля со списком года. Имя элемента управления: ct100 $ ContentPlaceHolder1 $ ddlSeries. Я пытаюсь установить значение для этого элемента управления с помощью urllib.urlencode (postdata), но я должен что-то делать неправильно - данные на странице не меняются. Можно ли это сделать на Python?

Я бы предпочел не использовать Селен, если это вообще возможно.

Я использую подобный код (от пользователя stackoverflow dbr)

import urllib

postdata = {'ctl00$ContentPlaceHolder1$ddlSeries': 9}

src = urllib.urlopen(
    "http://utahcritseries.com/RawResults.aspx",
    data = urllib.urlencode(postdata)
).read()

print src

Но, похоже, все те же данные за 2002 год. Я попытался использовать firebug для проверки заголовков, и я вижу много посторонних и случайных данных, отправляемых туда и обратно - мне нужно также отправлять эти значения обратно на сервер?

1 Ответ

3 голосов
/ 24 апреля 2009

Используйте превосходную механизированную библиотеку:

from mechanize import Browser

b = Browser()
b.open("http://utahcritseries.com/RawResults.aspx")
b.select_form(nr=0)

year = b.form.find_control(type='select')
year.get(label='2005').selected = True

src = b.submit().read()
print src

Механизация доступна на PyPI: easy_install mechanize

...