2013-07-07 12 views
5

Sto provando a raschiare un sito guardando il suo codice HTML in Chrome e acquisendo i dati usando Nokogiri. Il problema è che alcuni tag sono generati dinamicamente e non appaiono con una richiesta di apertura (url) quando si usa open-uri. C'è un modo per "forzare" un sito a generare dinamicamente il suo contenuto per uno strumento come open uri da leggere?Ottenere HTML generato dinamicamente con Nokogiri/Open URI

+1

Dai un'occhiata a [mechanize] (http://mechanize.rubyforge.org/). Penso che potrebbe fare quello che vuoi. – Aaronneyer

+2

A seconda * come * questo sito genera il suo contenuto, potrebbe essere necessario eseguire prima il suo JavaScript. – tessi

+0

A volte la meccanizzazione si blocca in siti Web complessi. Se JRuby è un'opzione e la meccanizzazione non funziona, darò anche uno sguardo a [Celerity] (http://celerity.rubyforge.org/). – yonosoytu

risposta

4

Se la lettura tramite open-uri non produce il contenuto necessario, è probabile che il client generi contenuto con Javascript.

Questa potrebbe essere una buona notizia: ispezionando le richieste AJAX effettuate dalla pagina, è possibile trovare un feed JSON del contenuto che si sta cercando, che è possibile quindi richiedere e analizzare direttamente. Questo ti porterà i tuoi dati senza dover scavare nel codice HTML - a portata di mano!

Se ciò non funziona per qualche motivo, però, sarà necessario aprire la pagina con un qualche tipo di browser, lasciare che esegua il suo clientide Javascript, quindi scaricare il DOM risultante in HTML. Qualcosa come PhantomJS è una scelta eccellente per questo tipo di lavoro.

+0

mi ha fatto risparmiare un sacco di tempo. –