Newsgroup: it.comp.lang.perl
Titolo: testo da pagina html esterna

Ciao a tutti,
devo realizzare uno script che vada su una pagina html esterna al sito, ne
estragga una parte di testo (per esempio contenuta in una tabella) e lo
visualizza nello schermo o in una nuova pagina web. Come posso fare? Che
funzione posso utilizzare?
Grazie a tutti coloro che mi risponderanno.
Ciao
Davide

 estragga una parte di testo (per esempio contenuta in una tabella)
Potresti usare due moduli:
LWP::UserAgent per recuperare una pagina remota
HTML::Parser per ottenere i dati che ti servono dall'html
-- 
$_=q,6;-16;-1;-8;0;7;-13;-12;-9;-3;13#4A75737420616E6F74686572,,($_,$b)=
split?#?;@b=split?;?;map{$c.=$_,$d.=chr$b[$e++]+ord}split??,pack'H24',$b
;chop$d,print$c.chr(32).$d

 estragga una parte di testo (per esempio contenuta in una tabella)
Per un semplice esempio d'uso dei due moduli consigliati da Andrea,
puoi provare qui:
http://www.perlmongers.it/scoop/story/2001/12/8/111049/358
Inoltre, se pensi di dover fare spesso parsing di tabelle,
HTML::TableExtract puo` essere molto comodo:
http://search.cpan.org/search?dist=HTML-TableExtract
ciao
Stefano

 wrote in message
3CA30F92...@friuli.com...


 queste due funzioni?
LWP::UserAgent e HTML::Parser (oltre a HTML::TableExtract citato
dall'ottimo Stefano) sono moduli e non funzioni.
Tra le varie differenze, abbiamo:
a) devi installarlo (a meno che non si trovi già nella
   distribuzione standard)
b) devi esplicitamente richiamare il suo utilizzo nel codice 
   use modulo; # ad inzio script
Cercando con google ho trovato su lwp in italiano:
http://www.linuxjournal.it/sommari/mesi/lx-0004/0005063.htm
Su HTML::Parser non ho trovato niente di significativo.
Ma una volta installato il modulo, trovi tutte le informazioni che
vuoi (in inglese) digitando da linea di comando:
perldoc HTML::Parser


 Ciao e grazie
Intendo il "preferibilmente" in senso debole, quindi ti rimando
alla documentazione (in inglese) per quanto riguarda
LWP::UserAgent (nota pero` che gia` con la funzione get()
si risolvono molti problemi, come nell'esempio da me citato
nel primo reply).
HTML::Parser invece ha una sintassi piu` "tricky", sulla quale
vale la pena di spendere qualche parola (rimandandoti nel
frattempo alla documentazione, in particolare ai paragrafi
"Argspec" e "Events").
Ecco qui un piccolissimo stripper di codice HTML
(entra codice HTML, esce la stessa roba senza i tag).
---------------------------------------
 1:  #!/usr/bin/perl
 2:
 3:  use HTML::Parser;
 4:  use strict;
 5:
 6:  my $parser = HTML::Parser->new(
 7:   text_h => [sub { print shift }, "text"],
 8:  );
 9:
10:  my $source = qq{
11:   <title>Questo e` il titolo del documento</title>
12:   <h1>E questo un pezzo di testo</h1>
13:  };
14:
15:  $parser->parse( $source );
---------------------------------------
Linee 6-8:
Sono le piu` importanti. Di fatto lo stripper e` tutto nella
chiamata al costruttore. new() accetta una hash che puo`
essere utilizzata, tra le altre cose, per definire degli handler
per gli eventi che possono capitare durante il parsing del
documento. Visto che la chiave ha la forma "evento_h",
HTML::Parser sa che stiamo assegnando un handler per
l'evento text. Dal paragrafo "Events":
    Text
        This event is triggered when plain text
        (characters) is recognized.
Visto che stiamo definendo un handler, vuole una reference
ad un array. All'interno ci sono due cose: una reference
ad una procedura (l'handler vero e proprio) ed una stringa
contenente la specifica dei parametri che dovranno essere
passati all'handler. Ti "smonto" la riga 7 cosi` sono piu`
chiaro:
text_h => [   # Stiamo scrivendo un array reference
  sub {          # Definiamo una procedura anonima...
    print shift  # ... che non fa nient'altro che stampare cio`
                     # che le viene passato.
  },
  "text"          # Le passiamo 'text' (controlla cosa vuol
                     # dire nel paragrafo "Argspec" della
                     # documentazione).
],                   # Potremmo continuare con un altro handler.
10-13:
Vabbeh... HTML::Parser macina tutto: stringhe, file...
15:
Chiamata al metodo parse() dell'oggetto $parser, che
autonomamente provvedera` a chiamare l'handler
appena definito.
ciao
Stefano