Веб-искатель, который может интерпретировать JavaScript
Я хочу написать веб-искатель, который может интерпретировать JavaScript. В основном это программа на Java или PHP, которая принимает URL-адрес в качестве входных данных и выводит дерево DOM, которое аналогично выходу в окне HTML Firebug. Лучшим примером является Kayak.com, где вы не можете видеть, что итоговый DOM отображается в браузере при просмотре источника, но может сохранить полученный HTML, хотя Firebug.
Как мне это сделать? Какие существуют инструменты, которые помогут мне?
Ответы
Ответ 1
Ruby Capybara - это библиотека интеграционных тестов, но она также может использоваться для написания автономных веб-сканеров. Учитывая, что он использует бэкэнды, такие как Selenium или headless WebKit, он интерпретирует javascript из коробки:
require 'capybara/dsl'
require 'capybara-webkit'
include Capybara::DSL
Capybara.current_driver = :webkit
Capybara.app_host = "http://www.google.com"
page.visit("/")
puts(page.html)
Ответ 2
Я использовал HtmlUnit (Java). Это было первоначально разработано для страниц тестирования модулей. Это не идеальный javascript, но он не подвел меня в моем ограниченном использовании. Согласно сайту, он может в достаточной степени запустить следующие JS-рамки:
- jQuery 1.2.6
- MochiKit 1.4.1
- GWT 2.0.0
- Sarissa 0.9.9.3
- MooTools 1.2.1
- Прототип 1.6.0
- Ext JS 2.2
- Dojo 1.0.2
- YUI 2.3.0
Ответ 3
У вас больше шансов на успех в Java, чем на PHP. Существует уже существующий интерпретатор Javascript для Java, называемый Rhino. Это эталонная реализация и хорошо документированная.
Rhino используется во многих существующих Java-приложениях для обеспечения возможности Javascript-скриптов в приложении. Я также слышал об этом, чтобы помочь с выполнением автоматических тестов в Javascript.
Я также знаю, что Java включает в себя код, который может анализировать и отображать HTML, хотя тот, кто знает больше о Java, чем я, может, вероятно, посоветуйте больше об этом. Я не отрицаю, что было бы очень трудно добиться чего-то подобного; вы по существу перепрофилируете много того, что делает браузер.
Ответ 4
Вы можете использовать движок рендеринга Mozilla Gecko:
https://developer.mozilla.org/en/Gecko
Ответ 5
Посмотрите здесь: http://snippets.scrapy.org/snippets/22/
это скребок экрана python и веб-обходной фреймворк, используемый с веб-серверами, которые открывают страницу, отображают все, что вам нужно, и дают вам возможность "захватить" все, что вы хотите на странице, через