OVH Cloud OVH Cloud

[Limite de 256 HTTP/HTML]

6 réponses
Avatar
Philippe
Bonsoir,

Aucune idée d'où ceci peut provenir... J'ai écrit un module qui va faire
des requêtes sur le Web, du genre du module WWW::Search::Pagesjaunes
mais ce sont des requêtes sur des pages et non sur des formulaires.
Le script fonctionne très bien jusqu'à la limite de 256 lignes écrites
dans le fichier de sortie (du texte tabulé).

J'avoue (est-ce l'heure ?) que je ne comprends pas.
Toute aide sera la bienvenue.

perl5.6.1, linux Debian Woody.
Philippe

6 réponses

Avatar
Alain BARBET
Philippe wrote:
Bonsoir,

Aucune idée d'où ceci peut provenir... J'ai écrit un module qui va faire
des requêtes sur le Web, du genre du module WWW::Search::Pagesjaunes
mais ce sont des requêtes sur des pages et non sur des formulaires.
Le script fonctionne très bien jusqu'à la limite de 256 lignes écrites
dans le fichier de sortie (du texte tabulé).


Un disque local plein tout simplement ?

Avatar
Philippe
J'aurais aimé que ce soit si simple :-/ mais non. Pourquoi 256 et pas
257 ou 329 ? Et ça se répète.

Merci.
Philippe


Philippe wrote:

Bonsoir,

Aucune idée d'où ceci peut provenir... J'ai écrit un module qui va
faire des requêtes sur le Web, du genre du module
WWW::Search::Pagesjaunes mais ce sont des requêtes sur des pages et
non sur des formulaires.
Le script fonctionne très bien jusqu'à la limite de 256 lignes écrites
dans le fichier de sortie (du texte tabulé).



Un disque local plein tout simplement ?




Avatar
root
On Tue, 02 Dec 2003 23:15:40 +0100, Philippe wrote:

Bonsoir,

Aucune idée d'où ceci peut provenir... J'ai écrit un module qui va faire
des requêtes sur le Web, du genre du module WWW::Search::Pagesjaunes
mais ce sont des requêtes sur des pages et non sur des formulaires.
Le script fonctionne très bien jusqu'à la limite de 256 lignes écrites
dans le fichier de sortie (du texte tabulé).

J'avoue (est-ce l'heure ?) que je ne comprends pas.
Toute aide sera la bienvenue.



Et si tu nous donnais ton code, ou au moins un morceau minimal qui
reproduise cet effet pour pouvoir essayer chez nous ?

Avatar
Philippe
Bonjour root :-)

Voici mon erreur, si mon interprétation est mauvaise merci de corriger:
Voici le code initial:

#
# On recherche la "page suivante"
my $oparser = HTML::TokeParser->new( $page );
while (my $token = $oparser->get_tag("a")) {
my $url = $token->[1]{href} || '-' ;
my $text = $oparser->get_trimmed_text("/a");
if ($text eq 'Suivant') {
$url = URL .$url ;
$page = $self->{ua}->request(GET $url)->content ;
}
}

Voici le code modifie
#
# On recherche la "page suivante"
my $oparser = HTML::TokeParser->new( $page );
my $newpage ;
^^^^^^^^^^^^^
while (my $token = $oparser->get_tag("a")) {
my $url = $token->[1]{href} || '-' ;
my $text = $oparser->get_trimmed_text("/a");
if ($text eq 'Suivant') {
$url = URL .$url ;
$newpage = $self->{ua}->request(GET $url)->content ;
^^^^^^^^
}
}
$page = $newpage ;

Que j'interprète comme ceci:
je change en cours de lecture le contenu d'une référence ($page). En
utilisant une variable intermédiaire, je protège la recherche et le
résultat. Reste que ça marche sur un certain nombre de page (256) avant
de "planter"...

Philippe

On Tue, 02 Dec 2003 23:15:40 +0100, Philippe wrote:
[...]


Et si tu nous donnais ton code, ou au moins un morceau minimal qui
reproduise cet effet pour pouvoir essayer chez nous ?


Avatar
root
On Thu, 04 Dec 2003 09:06:16 +0100, Philippe wrote:


Voici mon erreur, si mon interprétation est mauvaise merci de corriger:
Voici le code initial:

#
# On recherche la "page suivante"
my $oparser = HTML::TokeParser->new( $page );
while (my $token = $oparser->get_tag("a")) {
my $url = $token->[1]{href} || '-' ;
my $text = $oparser->get_trimmed_text("/a");
if ($text eq 'Suivant') {
$url = URL .$url ;
$page = $self->{ua}->request(GET $url)->content ;
}
}

Voici le code modifie
#
# On recherche la "page suivante"
my $oparser = HTML::TokeParser->new( $page );
my $newpage ;
^^^^^^^^^^^^^
while (my $token = $oparser->get_tag("a")) {
my $url = $token->[1]{href} || '-' ;
my $text = $oparser->get_trimmed_text("/a");
if ($text eq 'Suivant') {
$url = URL .$url ;
$newpage = $self->{ua}->request(GET $url)->content ;
^^^^^^^^
}
}
$page = $newpage ;

Que j'interprète comme ceci:
je change en cours de lecture le contenu d'une référence ($page). En
utilisant une variable intermédiaire, je protège la recherche et le
résultat. Reste que ça marche sur un certain nombre de page (256) avant
de "planter"...



« planter » comment ? y a un message d'erreur de perl ? tu utilises LWP
? message d'erreur de LWP ? essaye de verifier les réponses de tes
request() avec `is_success()' avant de prendre le contenu...

Si tu utilises `WWW::Mechanize' (a la place de LWP) tu peux éviter de
parser toi même le HTML en utilisant un `find_link( text_regex =>
qr/Suivant/ );' par exemple.

Avatar
famille.chauvat chez free point fr
On Thu, 04 Dec 2003 09:06:16 +0100, Philippe wrote:


Voici mon erreur, si mon interprétation est mauvaise merci de corriger:
Voici le code initial:

#
# On recherche la "page suivante"
my $oparser = HTML::TokeParser->new( $page );
while (my $token = $oparser->get_tag("a")) {
my $url = $token->[1]{href} || '-' ;
my $text = $oparser->get_trimmed_text("/a");
if ($text eq 'Suivant') {
$url = URL .$url ;
$page = $self->{ua}->request(GET $url)->content ;
}
}

Voici le code modifie
#
# On recherche la "page suivante"
my $oparser = HTML::TokeParser->new( $page );
my $newpage ;
^^^^^^^^^^^^^
while (my $token = $oparser->get_tag("a")) {
my $url = $token->[1]{href} || '-' ;
my $text = $oparser->get_trimmed_text("/a");
if ($text eq 'Suivant') {
$url = URL .$url ;
$newpage = $self->{ua}->request(GET $url)->content ;
^^^^^^^^
}
}
$page = $newpage ;

Que j'interprète comme ceci:
je change en cours de lecture le contenu d'une référence ($page). En
utilisant une variable intermédiaire, je protège la recherche et le
résultat. Reste que ça marche sur un certain nombre de page (256) avant
de "planter"...




« planter » comment ? y a un message d'erreur de perl ? tu utilises LWP
? message d'erreur de LWP ? essaye de verifier les réponses de tes
request() avec `is_success()' avant de prendre le contenu...
*Aucun* message d'erreur... ni perl, ni LWP ni rien. Ok pour le test, je

vais l'intégrer.

Si tu utilises `WWW::Mechanize' (a la place de LWP) tu peux éviter de
parser toi même le HTML en utilisant un `find_link( text_regex =>
qr/Suivant/ );' par exemple.
Merci pour l'info, je l'utiliserai dans la suite.

Philippe