Rechercher : dans
Par :

Parser html avec perl

Dernière réponse le 15 mar 2009 à 23:39:00 fedo, le 15 mar 2009 à 21:18:40 
 Signaler ce message aux modérateurs

Bonjour,
mon probleme consiste à convertir une page html en fichier texte pour pouvoir recuperer le texte de cette page.
jusqu'a mnt j'arrive a convertir cette page en fichier xml ke j'enregistre sous format ".txt",
et je recupere des les lignes voila le script que j'utilise:

# file: htmlToXml.pl

use chilkat;

# Perl script to convert HTML files to well-formed XML

$htmlConv = new chilkat::CkHtmlToXml();
$success = $htmlConv->UnlockComponent("anything for 30-day trial");
if (! $success) {
print "component is locked!\n";
exit;
}

$htmlConv->ConvertFile("test.html","test1.txt");
$i=0;
open (F, "test1.txt") || die "Problème pour ouvrir";
while (<F>) {
if($_ =~ /<text>(.+)<\/text>*/)
{

print "$1 \n";
}


}
close F;

cependant je n'arrive pas à recuperer les paragraphe je pense ke parske dans mon script je precise ke la ligne à afficher doit commencer par la balise <text> .

est ce ke kelk un peut m aider je suis vraiment bloqué,merci d'avance

Configuration: Windows XP
Internet Explorer 6.0

Meilleures réponses pour « parser html avec perl » dans :
[Aspirateur de pages HTML] Comment aspirer un site Web ? VoirHTTrack est un excellent aspirateur, gratuit en licence GNU GPL (libre). HTTrack permet de télécharger un site web d'Internet vers votre disque dur, en construisant récursivement tous les répertoires, récupérant html, images et fichiers du serveur...
[Site web] Vérifier, optimiser et nettoyer son code HTML VoirLes logiciels WYSIWYG de création de pages web produisent parfois du contenu HTML rempli de balises HTML inutiles, voire incompatibles avec les recommandations du W3C. Les outils proposés ci-dessous permettent de vérifier la validité du code HTML...
Javascript - Modifier la hauteur (height) d'un élément HTML VoirPour modifier la hauteur d'un élément HTML en javascript, il suffit d'utiliser sa propriété de style "height". Pour cela vous pouvez y faire référence de la manière suivante : Si vous souhaitez connaître la hauteur (height) d'un bloc HTML, il...
Télécharger HTML Tidy VoirHTML Tidy est un utilitaire permettant de vérifier et d'optimiser tout code HTML. La version originale de cet utilitaire s'utilise en mode de commande uniquement. La présente version, appelée "GUI Tidy", possède une interface graphique. Notez...
Télécharger HTML Tidy fr VoirHTML Tidy est un utilitaire permettant de vérifier et d'optimiser tout code HTML. Cette version est la version 1.1.5.0, c'est-à-dire la version de base ! Ayant remarqué que les débutants avaient des problèmes dans l'utilisation de la version...
PHP - Parser du XML VoirIntroduction à XML PHP permet l'analyse syntaxique (parsage ou parsing en anglais) d'un document XML. Le langage XML (eXtensible Markup Language, traduisez Langage à balises extensibles) est un métalangage, c'est-à-dire un langage permettant de...
Caractères spéciaux HTML VoirCodage des caractères spéciaux Le standard HTML demande de respecter le codage des caractères ASCII 7 bits, c'est-à-dire que les caractères accentués ne sont pas autorisés. Il faut pour cela utiliser un codage particulier. Pour...
Les balises HTML VoirHTML, un langage à balises Le HTML n'est pas un langage de programmation. Il s'agit d'un langage permettant de décrire la mise en page et la forme d'un contenu rédigé en texte simple. Une page HTML est ainsi un simple fichier texte...

1

lami20j, le 15 mar 2009 à 22:14:46

Salut,

Si la méthode n'importe alors tu peux utiliser le programme html2text

Sinon pour parser html tu peux utiliser HTML::PARSER au lieu de passer par XML.
106485010510997108

Répondre à lami20j

2

fedodido, le 15 mar 2009 à 23:31:08

Merci pour ton aide, mais j ai tro essayer et ça marche pas
j ai pris des scripts de html::parser mais ça marche je ne sais pas comment ça fonctionne ex:

#!/usr/bin/perl
use strict;
use warnings;

use LWP::Simple;
use HTML::Parser;
use HTML::Form;

my $page = get( "lien");

# création de mon parser
my $parser = HTML::Parser->new();

# définition des mes evenements
$parser->handler( text => \&text, "text" );
$parser->handler( start => \&start, "tagname,attr" );
$parser->handler( end => \&end, "tagname" );

$parser->parse($page);

print &get_data();

parser->eof;
{
my $in;
my @data;

sub start {
my ($tag, $attr) = @_;
$in++
if $tag eq 'div'
and exists $attr->{id}
and $attr->{id} eq 'profilename';
}

sub end {
my ($tag) = @_;
$in-- if ($tag eq 'div' and $in='1');
}

sub text {
my ($text) = @_;
push @data, $text if ($in );
}

sub get_data {
#print "in : ".$in;
return @data;
}

}
exit;

mais ça ne me donne rien

Répondre à fedodido

3

lami20j, le 15 mar 2009 à 23:34:20

Re,

Je suis désolé mais ce soir je n'ai plus le temps.
Si tu ne trouves pas une solution je regarderai demain soir. 106485010510997108

Répondre à lami20j

4

 fedodido, le 15 mar 2009 à 23:39:00

Ok merci meme si je suis pressée mais c'est gentil de ta part je ne veux pas quand meme te deranger,bonne chance

Répondre à fedodido
Collection CommentÇaMarche.net