Экран, очищающий полностью визуализированную страницу - PullRequest
1 голос
/ 01 марта 2011

Я пытаюсь понять, как захватить полностью визуализированную страницу и манипулировать ею.Я использовал Nokogiri, Hpricot, Mechanize и т. Д., Но никто не может захватить страницу, элементы которой визуализируются AJAX или чем-то еще после факта.

Примером является страница статуса Twitter, одна из многих, с которыми я сталкивался в этом проекте, с которыми у меня возникают проблемы:

http://twitter.com/#!/nytimes/status/42341419062525952

или

http://twitter.com/#!/alleyinsider/status/42337897038364672

Если вы посмотрите на источник HTML, в основном это javascript, который отображается позже.Посмотрев его в Firebug или другой консоли, вы увидите полностью визуализированный результат, но я понятия не имею, как захватить его с помощью вышеупомянутых инструментов.Я что-то пропустил?

Кстати: да, я знаю, что есть Twitter API.Но это скорее теоретический вопрос, так как я затронул это в различной степени на нескольких других сайтах.

Спасибо!

Ответы [ 7 ]

5 голосов
/ 01 марта 2011

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

Это правильно. Контент, который вы ищете, не существует в документе при захвате, он вставляется в результате того, что браузер обрабатывает JavaScript, который запрашивает контент через AJAX и вставляет его на страницу.

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

Проект Watir способен сделать это. Это похоже на следующий шаг выше Mechanize, за исключением того, что вместо кода Ruby браузеру говорят, что делать с кодом Ruby. Таким образом, браузер должен иметь возможность загружать страницу, обрабатывать JavaScript, который затем извлекает содержимое, которое вы ищете.

Существуют варианты Watir для разных браузеров, поэтому вы можете использовать IE, Safari, Firefox и т. Д.

0 голосов
/ 02 марта 2011

iMacros - отличный и простой инструмент для просмотра веб-страниц .Вы можете запустить очищающий код в IE, Firefox и Chrome.Существует как бесплатная, так и коммерческая версия.Мне нравится, что он работает с любым веб-сайтом, даже с Flash-апплетами.

0 голосов
/ 01 марта 2011

Вы можете использовать веб-скребок IRobotSoft и получить обновленную страницу. Проверьте эти демонстрации: http://irobotsoft.com/help/

0 голосов
/ 01 марта 2011

Если вы работаете в Java, вы можете захотеть взглянуть на браузер lobo , который вы можете создать в своем коде и создать страницу. http://lobobrowser.org/java-browser.jsp. Однажды я попробовал это, но позже отказался от более простого решения без содержания ajax.

0 голосов
/ 01 марта 2011

Я сам работал над проектом по соскобу и использую Celerity с довольно хорошим успехом. Вот пара ресурсов, которые должны быть полезны. Вторая ссылка специально адресована Ajax.

Начало работы: Скорость - Wiki Начало работы

Ajax: Скорость - Wiki (Ajax)

Удачи.

0 голосов
/ 01 марта 2011

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

Помимо этого, API очень помогает (как вы упомянули). Как ни странно, похоже, именно так работает веб-сайт Twitter , как, например, ваш пример .

0 голосов
/ 01 марта 2011

Вы пробовали WebDriver? Он загружает всю страницу в браузере (реальном или виртуальном), вы можете исследовать DOM страницы и передавать ей команды javascript для выполнения, если вы хотите изменить страницу.

...