questo è il mio codice
$url = URI->new($sito[$iesterni]);
$response = $browser->get($url, @ns_headers);
(Se avessi scritto (solo) "use strict;" avresti dato più o meno le
stesse informazioni ;-)
Qui spiega come scaricare soltanto i primi X byte (in vari modi):
http://www.perlmonks.org/?node_id=690951
Poi non so se sia la cosa migliore da fare: mi viene in mente che il
collo di bottiglia sia il tuo parser piuttosto che il trasferimento di
un file di testo (presumibilmente mai enorme, trattandosi di una pagina
html on-line), ma non avendo idea di come sia scritto tale parser (è
basato su HTML::Parser?) non so cosa suggerirti...
D'altro canto non vedo che utilità possa avere una pagina incompleta,
per i tuoi scopi di crawling...
A meno che tu non riesca a capire dai primi byte se si tratta di una
pagina /interessante/ o meno...
Ma non è che hai fornito un gran contesto eh! ;-)
E, come al solito, a fare ipotesi su quello che uno ha in mente si perde
solo tempo, rischiando di dire cose inutili anche per chi ha fatto la
domanda.
Se vuoi riprovare con qualche informazione in più...
Ciao.
Ciao mi hai dato proprio il link che mi serviva :-) ti rigrazio.
mi serve per vedere solo i meta del sito in questione, se la pagina è
online e altri dati.
io uso LWP::UserAgent
ora l'unico problema che mi rimane è che spesso il sito a cui lo
spider prova a collegarsi risponde lentamente (anche dopo 20 secondi,
mentre per altri siti è velocissimo), e ho provato a mettere il
timeout ma cmq lo script rimane lì ancorato ad aspettare che il sito
risponda. non c'è un modo per risolvere questo problema?
> Ciao mi hai dato proprio il link che mi serviva :-) ti rigrazio.
> mi serve per vedere solo i meta del sito in questione, se la pagina è
> online e altri dati.
> io uso LWP::UserAgent
> ora l'unico problema che mi rimane è che spesso il sito a cui lo
> spider prova a collegarsi risponde lentamente (anche dopo 20 secondi,
> mentre per altri siti è velocissimo), e ho provato a mettere il
> timeout ma cmq lo script rimane lì ancorato ad aspettare che il sito
> risponda. non c'è un modo per risolvere questo problema?
OK, direi che la cosa migliore è fare il crawling non bloccante (in
parallelo) su diversi siti, così se ne incontri uno /lento/, nel
frattempo il tuo robot ne visita altri senza bloccarsi.
Inoltre con i moduli elencati nel seguito puoi anche settare un timeout
scaduto il quale il sito troppo lento viene (ad esempio) abbandonato.
Puoi usare questo che è proprio quello che ti serve bell'e pronto:
http://search.cpan.org/dist/ParallelUserAgent/
Con questi altri due approcci invece (entrambi basati su AnyEvent ma con
interfacce diverse), ti tocca lavorare un pochino di più:
Coro:
http://search.cpan.org/dist/Coro/
esempio:
http://search.cpan.org/src/MLEHMANN/Coro-4.744/eg/lwp
AnyEvent:
http://search.cpan.org/dist/AnyEvent/
ma ti danno un po' di flessibilità in più (e funzionano benissimo).
Poi ci sarebbe pure questo, se ti piace POE:
http://search.cpan.org/~rcaputo/POE-Component-Client-UserAgent-0.06/UserAgent.pm
(che comunque usa LWP::Parallel)
e ancora altri n-mila approcci (tra i quali quelli fork e thread-based)
come sempre in Perl, fortunatamente :-)
Ciao,
Emanuele.