script Perl " strisciare " attraverso il web , spulciando tra l'oceano di pagine HTML per le informazioni , e, inevitabilmente, incontrano alcuni dei milioni di file Adobe Acrobat PDF spruzzato su Internet. Anche se sono pronti per la stampa e attraente , dal punto di vista di un web crawler , i PDF sono un dado leggermente più difficile da decifrare , di pagine HTML basati su testo semplice . Per fortuna , come con molte attività web , vi è un modulo Perl che può contribuire a rendere la vita più facile : CAM :: PDF . Questa interfaccia di programmazione , anche se per lo più destinati a creare e manipolare file PDF , ha alcuni programmi di utilità che consente di script per cercare il loro contenuto . Cose che ti serviranno
scripting Perl ambientaliste CAM :: PDF Perl modulo
Testo o codice editor di file PDF
Mostra più istruzioni
1 < p > Installa CAM :: PDF . L'utilità CPAN offre il modo più semplice per farlo - avviare CPAN nella riga di comando e al prompt , digitare " install CAM :: PDF " (senza virgolette ) economici 2
Aprire un editor e . avviare lo script , inserendo le seguenti righe per avviare l'interprete Perl e importare il modulo necessario :
# /usr /bin /perluse CAM :: PDF ;
Aggiungere le due righe successive a! elaborare gli argomenti della riga di comando che l'utente passerà in :
mio $ file = shift; my $ ricerca = shift;
il primo argomento passato allo script sarà il nome di un file PDF . file e il secondo , la stringa di ricerca
3
Creare un nuovo oggetto CAM :: PDF aggiungendo la seguente riga allo script :
my $ doc = CAM :: PDF - > new ( $ file) ;
Usando il metodo NumPages del modulo importato per definire il limite superiore , creare un ciclo per elaborare ogni pagina del documento :
foreach my $ p ( ( 1 .. $ doc -> NUMPAGES ( ) ) ) {
4
All'interno del ciclo , aggiungere questa riga per avere ogni pagina di testo dal file PDF :
< p > my $ str = $ doc- > getPageText ( $ p ) ;
aggiungere l'istruzione di script seguente per dividere il testo della pagina in una molteplicità di linee separate :
@ righe = split ( /\\ n /, $ str ) ;
Termina l'istruzione ciclica inserendo una parentesi di chiusura :
}
5
Infine, aggiungere un altro anello alla lo script per elaborare ogni riga della pagina e cercare una corrispondenza per la stringa di ricerca dell'utente come una espressione regolare . Se l'espressione regolare restituisce una partita , questo esempio stamperà la relativa riga e il numero di pagina a stdout . Al posto di queste istruzioni di stampa , è necessario implementare il codice per elaborare i risultati in base alle esigenze
my $ i = 0; . Foreach $ line ( @ righe) { + + $ i ; if ( $ linea = ~ /$ search /) { print " \\ " $ ricerca \\ "che si trova in linea $ i di pagina $ p \\ n"; print " $ riga \\ n \\ n" } }