Как Perl может взаимодействовать с формой AJAX - PullRequest
3 голосов
/ 12 марта 2010

Я пишу Perl-программу, которая выполняла простую команду get для получения результатов и их обработки. Но сайт был обновлен и теперь имеет Java-компонент, который обрабатывает результаты (поэтому фактических данных больше нет в исходном коде).

Это сайт: http://wro.westchesterclerk.com/legalsearch.aspx

Попробуйте ввести:
Индекс: 11103
Год: 2009

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

Я написал много программ на Perl, которые просто передают переменные через URL, а результаты перечислены в исходном коде, поэтому их легко разобрать. (С использованием LWP: просто)

Как:

$html = get("http://www.url.com?id=$somenum&year=$someyear")

Но это абсолютно ново для меня, и я не знаю, с чего начать. Я немного знаком с LWP: UserAgent и Mechanize.

Я бы очень признателен за любую помощь.

Спасибо!

Ответы [ 3 ]

3 голосов
/ 12 марта 2010

Такой вопрос часто задают. Стандартный ответ Wireshark .

Я просто использовал его на этом веб-сайте с данными испытаний, которые вы предоставили, и извлек один ответственный запрос POST. Это позволяет полностью обойти Javascript.

2 голосов
/ 12 марта 2010

Для вас может быть более логичным использовать один из модулей, который управляет браузером. Что-то вроде Mozilla :: Mechanize или инструментов Selenium.

Браузер лучше всего знает, как взаимодействовать с сервером с помощью AJAX и повторно визуализировать DOM и т. Д., Поэтому создайте свой сценарий на основе этой способности.

0 голосов
/ 12 марта 2010

Что вы просите сделать в в этом случае сложно. Не невозможно, но сложно.

метод А: Вы можете просмотреть их код JavaScript. Их «ajax» делает запрос get / post на другую веб-страницу и динамически загружает результаты. Если вы можете расшифровать, что это за ссылка и правильные аргументы, вы можете продолжать использовать get. Я бы рекомендовал получить плагин firebug и любой другой инструмент, который поможет вам де-запутать их javascript.

Другой метод: Если ваша программа может получить доступ к веб-браузеру (с поддержкой URL Javascript. Как Firefox). Вы можете программно перейти по этим адресам, затем подождать и получить данные.

http://wro.westchesterclerk.com/legalsearch.aspx
javascript: function go() { document.getElementById('ctl00_tbSearchArea__ctl1_cphLegalSearch_splMain_tmpl0_tbLegalSearchType__ctl0_txtInde    xNo').value=11109; document.getElementById('ctl00_tbSearchArea__ctl1_cphLegalSearch_splMain_tmpl0_tbLegalSearchType__ctl0_txtYear').value='09';searchClick();} go();

Это метод, который мы использовали вместе с mozembed , чтобы программно обойти это. Недавно мы перешли на Web Kit . И чтобы убрать это из памяти, мы использовали Xvfb / Xvnc, чтобы создать виртуальный рабочий стол для загрузки браузера.


Это методы, которые я придумал до сих пор. Дайте мне знать, если вы придумали другой. Также я надеюсь, что помог.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...