2010-04-19 16 views
18

Desidero scrivere un web crawler in grado di interpretare JavaScript. Fondamentalmente è un programma in Java o PHP che accetta un URL come input e genera l'albero DOM che è simile all'output nella finestra Firebug HTML. L'esempio migliore è Kayak.com in cui non è possibile visualizzare il DOM risultante visualizzato sul browser quando si "visualizza l'origine", ma è possibile salvare l'HTML risultante tramite Firebug.Web crawler in grado di interpretare JavaScript

Come faccio a fare questo? Quali strumenti esistono che potrebbero aiutarmi?

+3

Potresti usare Webkit. – Seth

+15

Freddo. Qual è la tua domanda? –

+0

Sto cercando di scrivere un web crawler in grado di eseguire codice JavaScript sulla pagina che sto cercando di gattonare. Ad esempio, alcune pagine hanno il codice JavaScript per popolare la pagina con i dati di una chiamata AJAX o da un array JavaScript. Se apri queste pagine in FireFox e fai clic su Visualizza -> 'Origine pagina', non vedi il DOM HTML completo che vedi nella finestra del browser.Ma se hai installato il plugin firebug, puoi aprire firebug, fare clic sulla scheda HTML, fare clic con il pulsante destro su nella finestra di debug e fare clic su "Copia HTML" e incollarlo in un editor di testo, puoi vedere il DOM HTML generato dal codice JavaScript . – user320662

risposta

2

È più probabile che tu abbia successo in Java che in PHP. Esiste un interprete Javascript preesistente per Java chiamato Rhino. È un'implementazione di riferimento e ben documentata.

Rhino viene utilizzato in molte applicazioni Java esistenti per fornire funzionalità di script Javascript all'interno dell'applicazione. Ne ho anche sentito parlare per l'esecuzione di test automatici in Javascript.

So anche che Java include il codice che può analizzare e rendere HTML, anche se qualcuno che sa più di Java di me può probabilmente consigliare di più su questo. Non sto negando che sarebbe molto difficile ottenere qualcosa del genere; essenzialmente si sta ri-implementando molto di ciò che fa un browser.

+0

hi thomasrutter, grazie per il puntatore ma immagino che rhino sia un motore JavaScript e probabilmente ho bisogno di costruire un browser prototipo usando Rhino come motore JavaScript per eseguire la scansione di una pagina pesante JavaScript. Per favore correggimi se ho torto – user320662

+0

Java include anche le capacità di analisi/rendering HTML. Qualcuno che sa più di Java di me potrebbe essere in grado di consigliarlo meglio, le mie conoscenze finiscono qui. – thomasrutter

5

Sto usando HtmlUnit (Java). Questo è stato originariamente progettato per le pagine di test delle unità. Non è javascript perfetto, ma non mi ha mancato nel mio uso limitato. Secondo il sito, è possibile eseguire le seguenti quadri JS in misura ragionevole:

  • jQuery 1.2.6
  • MochiKit 1.4.1
  • GWT 2.0.0
  • Sarissa 0.9.9.3
  • MooTools 1.2.1
  • Prototype 1.6.0
  • Ext JS 2.2
  • Dojo 1.0.2
  • 0.123.
  • YUI 2.3.0
+0

Devi sapere java per usarlo con uno script php? –

+0

Devi usare java con esso. Sebbene tu possa provare a utilizzare una soluzione basata sul selenio per PHP. – Jeff

6

Ruby Capybara è una libreria di test di integrazione, ma può anche essere usato per scrivere stand-alone web- crawler. Dato che utilizza backend come selenio o WebKit senza testa, interpreta javascript out-of-the-box:

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) 
1

Dare un'occhiata qui: http://snippets.scrapy.org/snippets/22/ è una screen scraping pitone e framework strisciando Web utilizzato con webdrivers che si aprono una pagina, visualizza tutte le cose che ti servono e ti dà la possibilità di "catturare" tutto quello che vuoi nella pagina tramite

Problemi correlati