Отправка запросов и извлечение результатов из ASPX-страниц с использованием Python?

1

Я пытаюсь получить результаты для пакета запросов на этой странице инструментов демографии: http://adlab.microsoft.com/Demographics-Prediction/DPUI.aspx

Действие POST в форме вызывает одну и ту же страницу (_self) и, вероятно, публикует некоторые данные о событиях. Я читал в другом сообщении здесь, в stackoverflow, что для страниц aspx обычно требуются некоторые данные в представлении и валидации. Я просто сохраняю их из запроса, повторно отправляю запрос POST?

Или есть более чистый способ сделать это? Один из параметров viewstate aspx составляет около 1000 символов, и невероятное уродство вставки этого кода в мой код заставляет меня думать, что это должно быть лучшим способом. Все ссылки на вещи, которые я могу прочитать, будут полезны, спасибо!

  • 0
    "возможно, публикует некоторые данные о событиях"? Вам нужно это подтвердить.
Теги:
screen-scraping
beautifulsoup

3 ответа

1

Используйте urllib2. Ваши данные POST - это простой словарь Python. Очень легко редактировать и поддерживать.

Если ваша форма содержит скрытые поля - некоторые из которых закодированы - тогда вам нужно сделать GET, чтобы получить форму и различные значения семенного поля.

После того, как вы получите форму, вы можете добавить необходимые входные значения к указанным, скрытым значениям и вернуть ответ обратно.

Кроме того, вы должны быть уверены, что будете обрабатывать любые файлы cookie. urllib2 также поможет.

В конце концов, это все браузер делает, и он работает в браузере. Браузер не знает ASPX от CGI от WSGI, поэтому нет волшебства, потому что это ASPX. Иногда вам нужно сделать GET перед отправкой POST, чтобы правильно настроить значения и файлы cookie.

  • 0
    Привет, я использую urllib2 в настоящее время, но мне не совсем ясно, какие переменные я должен включить в данные POST. Интересно, верна ли эта формулировка: что обычно нужно страницам .aspx?
  • 0
    @Cygorger: Там нет "обычно". Вы должны перейти на страницу, просмотреть исходный код, чтобы увидеть, что такое форма, а затем решить, что требуется. Если это работает через Javascript, вы должны прочитать Javascript.
Показать ещё 1 комментарий
1

Возможно, mechanize может быть полезным.

  • 0
    Спасибо за предложение. Я попытался механизировать и получил некоторые ошибки синтаксического анализа HTML. Изучая, могу ли я запустить страницу через lxml или Beautifulsoup, чтобы очистить ее и отправить обратно в браузер ()
0

Я использовал комбинацию requests и BeautifulSoup4 для аналогичной задачи.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню