Как мне выполнить обход сайта с динамическими формами с помощью WWW::Mechanize?

#javascript #asp.net #perl #web-crawler

#javascript #asp.net #perl #веб-сканер

Вопрос:

Мне нравится извлекать и сохранять значения HTML-таблицы с веб-сайта, который использует некоторый Javascript и имеет URL, заканчивающийся на .aspx , путем написания веб-сканера на Perl.

Веб-сайт предоставляет некоторые данные о результатах выборов.

У вас есть форма поиска с двумя вариантами в виде выпадающих меню: провинция provlist и город / муниципалитет munlist .

  • Вы выбираете провинцию. Веб-страница перезагружается на тот же URL и изменяет список доступных опций второго выпадающего меню, т.е. Город / Муниципалитет.
  • Теперь вы можете выбрать свой город / муниципалитет, и после нажатия кнопки SEARCH станет видна HTML-таблица с результатами.

Мне нравится извлекать все эти таблицы и их результаты.

Мне нравится делать это с помощью Perl, однако до сих пор я писал только очень маленькие / простые скрипты. Было бы очень полезно, если бы у вас была какая-то общая информация о том, как мне следует приступить к выполнению этой задачи.

  1. Я уже использовал некоторые из WWW::Mechanize функций раньше, правда, лишь некоторые. Могу ли я выполнить эту работу с WWW::Mechanize функциями, достаточно ли этих функций? Или мне нужны дополнительные пакеты?
  2. В часто задаваемых вопросах для WWW::Mechanize указано, что у него есть некоторые проблемы с Javascript. Однако в другом сообщении, которое я прочитал, возможно, удастся избежать этого Javascript. Вызывает ли проблему вызываемая функция Javascript для одного из выпадающих меню?

     <select name="provlist" onchange="javascript:setTimeout('__doPostBack('provlist','')', 0)" id="provlist" tabindex="1">
      
  3. Насколько сложен фреймворк ASPX?

Как я уже говорил ранее, у меня лишь небольшой опыт написания обходчиков Perl, поэтому я высоко ценю любую информацию / подсказки / и т.д., Которые вы можете предоставить.

Ответ №1:

  1. Этого достаточно.
  2. Форма нормально ухудшается без Javascript. Отправьте форму один раз с другим provlist элементом, например, АГУСАН-ДЕЛЬ-НОРТЕ, и на странице ответа появится соответствующий munlist (BUENAVISTA и т.д.), И форма будет установлена на первый элемент списка, а в таблице будут данные для первого элемента.

Комментарии:

1. у меня были некоторые проблемы с определением порядка работы с функциями forms (), но теперь это работает безупречно! Спасибо!

Ответ №2:

В часто задаваемых вопросах по WWW::Mechanize говорится, что у него есть некоторые проблемы с Javascript. Однако в другом сообщении, которое я прочитал, возможно, удастся избежать этого Javascript. Вызывает ли проблему вызываемая функция Javascript для одного из выпадающих меню?

Если вы хотите механизировать тяжелые страницы на JS, вы, вероятно, захотите взглянуть на WWW::Mechanize::Firefox