Как я могу использовать Perl для захвата текста от веб-страницы, которая динамично сгенерирована с JavaScript?

Существует веб-сайт, от которого я пытаюсь вытянуть информацию в Perl, однако раздел страницы, в которой я нуждаюсь, сгенерирован с помощью JavaScript так все, что Вы видите в источнике:

Я должен так или иначе вытащить содержание того отделения и сохранить его в файл с помощью Perl/proxies/whatever., например, информацию, которую я хочу сохранить, был бы

document.getElementById('results').innerHTML;

Я не уверен, возможно ли это или если у любого были любые идеи или способ сделать это. Я использовал исходный дамп рыси для других страниц, но так как я не могу прямой экран очищать эту страницу, которую я приехал сюда, чтобы спросить об этом!

Если кому-либо интересно, страницей является http://downloadcenter.trendmicro.com/index.php?clk=left_nav&clkval=pattern_file®s=NABU и информация, которую я пытаюсь получить, строка о ConsumerOPR

12
задан brian d foy 17 April 2010 в 13:42
поделиться

5 ответов

Вам нужно будет реконструировать то, что делает Javascript. Запускает ли он запрос AJAX для заполнения

? Если это так, будет довольно легко прослушать запрос с помощью Firebug , а затем скопировать его с помощью LWP :: UserAgent или WWW :: Mechanize , чтобы получить информацию. .

Если Javascript просто выполняет манипуляции с DOM в чистом виде, это означает, что данные должны существовать где-то еще на странице или в Javascript уже. Так что выясните, откуда он исходит, и возьмите его.

Наконец, если ни один из этих вариантов не подходит, вам может потребоваться просто использовать настоящий браузер для этого. Есть несколько вариантов для автоматизации поведения браузера, например WWW :: Mechanize :: Firefox или Win32 :: IE :: Mechanize .

14
ответ дан 2 December 2019 в 06:08
поделиться
7
ответ дан 2 December 2019 в 06:08
поделиться

для работы с динамически созданным HTML вы можете использовать плагин FireFox Chickenfoot . Или, если вам нужно что-то, что работает из командной строки, скрипт использует привязки к Perl. Я делал это с Python раньше.

0
ответ дан 2 December 2019 в 06:08
поделиться

Поскольку содержание вашей страницы создается с помощью некоторого Javascript, вам необходимо:

  • Выполнить некоторый код Javascript {{ 1}}
    • Даже, возможно, какой-то сложный код JS, выполняющий запросы Ajax и все такое?
  • И делать это с помощью движка, поддерживающего функции / методы, присутствующие в браузере (например, манипуляции с DOM )


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

Я никогда не использовал это для захвата, но Здесь может помочь Selenium suite : используя Selenium RC, вы можете запустить настоящий браузер и протестировать его - тогда у вас есть функции для получения из него данных.

Это не совсем быстро и довольно тяжело (нужно запускать браузер!) , но работает неплохо: например, вы будете использовать Firefox для перехода на свою страницу - - что означает настоящий движок Javascript, которым ежедневно пользуется множество людей; -)

4
ответ дан 2 December 2019 в 06:08
поделиться

Это может быть то, что вы ищете (в PHP):

$url = 'http://downloadcenter.trendmicro.com/ajx/pattern_result.php';

$ch = curl_init();
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, 'q=patresult_page&reg=NABU');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$content = curl_exec($ch);
curl_close($ch);

echo $content;
exit;

как только вы получите контент, вы можете использовать что-то вроде: http: / /code.google.com/p/phpquery/, чтобы проанализировать нужные вам результаты или аналогичный Perl-эквивалент ???

И / или выполните синтаксический анализ самостоятельно.

К вашему сведению: все, что я сделал, это использовал firebug для проверки запросов и воссоздал их с помощью PHP / CURL ...

0
ответ дан 2 December 2019 в 06:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: