Подтвердить что ты не робот

Веб-искатель, который может интерпретировать JavaScript

Я хочу написать веб-искатель, который может интерпретировать JavaScript. В основном это программа на Java или PHP, которая принимает URL-адрес в качестве входных данных и выводит дерево DOM, которое аналогично выходу в окне HTML Firebug. Лучшим примером является Kayak.com, где вы не можете видеть, что итоговый DOM отображается в браузере при просмотре источника, но может сохранить полученный HTML, хотя Firebug.

Как мне это сделать? Какие существуют инструменты, которые помогут мне?

4b9b3361

Ответ 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, чем я, может, вероятно, посоветуйте больше об этом. Я не отрицаю, что было бы очень трудно добиться чего-то подобного; вы по существу перепрофилируете много того, что делает браузер.

Ответ 5

Посмотрите здесь: http://snippets.scrapy.org/snippets/22/ это скребок экрана python и веб-обходной фреймворк, используемый с веб-серверами, которые открывают страницу, отображают все, что вам нужно, и дают вам возможность "захватить" все, что вы хотите на странице, через