2009-12-18 16 views
7

Qual è il modo più semplice per estrarre a livello di programmazione dati strutturati da un gruppo di pagine Web?Qual è il modo più semplice per estrarre a livello di programmazione dati strutturati da un gruppo di pagine Web?

Attualmente sto usando un programma Adobe AIR che ho scritto per seguire i collegamenti su una pagina e prendere una sezione di dati dalle pagine successive. Questo in realtà funziona bene, e per i programmatori penso che questo (o altri linguaggi) fornisca un approccio ragionevole, da scrivere caso per caso. Forse c'è un linguaggio o una libreria specifici che permettono a un programmatore di farlo molto rapidamente, e se così fosse sarei interessato a sapere cosa sono.

Esistono anche strumenti che consentono a un non programmatore, ad esempio un rappresentante dell'assistenza clienti o un responsabile per l'acquisizione dei dati, di estrarre i dati strutturati dalle pagine Web senza la necessità di eseguire una copia di copia e incolla?

risposta

11

Se fate una ricerca su StackOverflow per WWW::Mechanize & pQuery vedrete molti esempi l'utilizzo di questi moduli Perl CPAN.

Tuttavia, poiché si è menzionato "non programmatore", forse il modulo Web::Scraper CPAN potrebbe essere più appropriato? Il suo più DSL piace e quindi forse più facile da "non programmatore" da raccogliere.

Ecco un esempio dalla documentazione per il recupero di tweet da Twitter:

use URI; 
use Web::Scraper; 

my $tweets = scraper { 
    process "li.status", "tweets[]" => scraper { 
     process ".entry-content", body => 'TEXT'; 
     process ".entry-date",  when => 'TEXT'; 
     process 'a[rel="bookmark"]', link => '@href'; 
    }; 
}; 

my $res = $tweets->scrape(URI->new("http://twitter.com/miyagawa")); 

for my $tweet (@{$res->{tweets}}) { 
    print "$tweet->{body} $tweet->{when} (link: $tweet->{link})\n"; 
} 
0

io uso una combinazione di Ruby con hpricot e watir ottiene il lavoro fatto in modo molto efficiente

2

ho trovato YQL di essere molto potente e utile per questo genere di cose. È possibile selezionare qualsiasi pagina Web da Internet e renderla valida e quindi consentire di utilizzare XPATH per interrogare sezioni di esso. È possibile emetterlo come XML o JSON pronto per il caricamento in un altro script/applicazione.

ho scritto il mio primo esperimento con esso qui:

http://www.kelvinluck.com/2009/02/data-scraping-with-yql-and-jquery/

Da allora YQL è diventata più potente con l'aggiunta della parola chiave EXECUTE, che consente di scrivere la propria logica in javascript e si esegue questo sui server di Yahoo! s prima di restituire i dati all'utente.

Una scrittura più dettagliata di YQL è here.

È possibile creare un datatable per YQL per ottenere le informazioni di base che si stanno cercando di afferrare e quindi la persona responsabile dell'acquisizione dei dati potrebbe scrivere query molto semplici (in un DSL che è prettymuch inglese) contro quel tavolo . Sarebbe più facile per loro che "una corretta programmazione" almeno ...

0

Se non ti dispiace che la presa in consegna il computer, e vi capita di bisogno di sostegno javasript, WatiN è una dannatamente buona strumento di navigazione. Scritto in C#, è stato molto affidabile per me in passato, fornendo un bel wrapper indipendente dal browser per scorrere e ottenere il testo dalle pagine.

2

C'è Sprog, che consente di creare graficamente processi fuori dalle parti (Ottieni URL -> Elabora tabella HTML -> Scrivi file), e puoi inserire il codice Perl in qualsiasi fase del processo, o scrivere le tue parti per uso non programmatore. Sembra un po 'abbandonato, ma funziona ancora bene.

0

Gli strumenti commerciali sono risposte valide? Se è così, controlla http://screen-scraper.com/ è super facile da configurare e utilizzare per raschiare i siti web. Hanno una versione gratuita che è in realtà abbastanza completa. E no, non sono affiliato con l'azienda :)

Problemi correlati