Rechercher : dans
Par :

Perl : extraction de textes sur le web

Dernière réponse le 13 jui 2009 à 04:43:48 louise, le 3 jan 2002 à 16:19:38 
 Signaler ce message aux modérateurs

Je dois écrire un programme permettant de récupérer l'ensemble des pages contenant les documents HTML et appartenant à l'arborescence de la base. Pour cela, je dois :
1. extraire récursivement, depuis la base, l'ensemble des liens vers des pages HTML locales
2. utiliser le fichier contenant ces liens pour récupérer l'ensemble des textes correspondants.

Merci beaucoup d'avance.
Bonne année à tous ceux qui me répondent !

Meilleures réponses pour « perl : extraction de textes sur le web » dans :
[FreeMind] Publier une mindmap dans une page web VoirFreeMind est un logiciel de mindmapping. Vous avez plusieurs possibilités pour publier votre mindmap dans une page web. Flash applet Java Simple image PNG HTML+Javascript (texte seulement) HTML+Javascript (texte+icônes) HTML+Javascript...
Télécharger Some PDF Image Extract VoirLes documents PDF peuvent comporter du texte, des graphes, des tableaux mais aussi des images. Étant donné qu'il n'est pas possible d'en modifier le contenu, il en est de même pour l'extraction d'une image du contenu du document. Some PDF Image...
PHP - Affichage de texte sur le navigateur VoirLe but de PHP est de permettre la création de pages web dynamiques, ainsi son but premier est de pouvoir envoyer des données au navigateur. Les trois fonctions standards PHP fournit 3 fonctions permettant d'envoyer du texte au navigateur. Ces...
Perl - Caractéristiques du langage VoirFichier source, et interprétation Le fichier source d'un programme écrit en Perl est un simple fichier texte dont l'extension est par convention .pl. Ce fichier source doit être un fichier texte non formatté, c'est-à-dire un fichier texte dans sa...
Perl - Introduction VoirHistoire de Perl Perl (Practical Extraction and Report Language) est un langage de programmation dérivé des scripts shell, créé en 1986 par Larry Wall afin de mettre au point un système de News entre deux réseaux. Il s'agit d'un langage interprété...

1

sebsauvage, le 3 jan 2002 à 16:33:13

Mmm... ça fait un bon bout de temps que je n'ai pas fait de perl.
Est-ce que tu ne pourrais pas utiliser plutôt Python ?

Il a des librairies prêtes à l'emploi pour HTTP, le parsing de fichiers HTML et les expressions régulières.
Et c'est infiniment plus lisible que du perl, tout en étant plus puissant.
http://www.python.org

Sur leur site, il y a même des exemples pour parcourir automatiquement un site web complet et parser les pages HTML.

Pour ma part, j'ai bricolé un petit script Python qui désactive tous les scripts (javascript, VBScript...) dans les pages HTML contenues dans un répertoire (et ses sous-répertoires).
C'est remarquablement facile à programmer.
Le code source devrait être compréhensible sans commentaire.
Si ça peut t'aider, c'est là:

http://sebsauvage.net/python/
http://sebsauvage.net/python/stripscripts.py

Est-ce que le site web que tu dois tester est en local sur ta machine ? (fichiers accessibles directement sans passer par HTTP ?)
Sébastien SAUVAGE - sebsauvage at sebsauvage dot net

Répondre à sebsauvage

5

louise, le 3 jan 2002 à 22:07:44

Merci pour tes conseils mais je ne peux pas utiliser Python puisqu'il s'agit d'un sujet de dossier pour mes cours ! Si je rend à mon prof de Perl un projet en python, je ne pense pas qu'il va apprécier !!!
Mais merci qd même et bonne année.

Répondre à louise

2

jphilippe, le 3 jan 2002 à 17:36:34
  • +2

Vi vi, je vois, tu peux essayer de faire un téléport pro, ca marche mieux. Mais si tu veux faire du Perl, c'est ton droit et je le respecte.

Plus sérieusement:
- Tu dois avoir besoin d'une fonction qui lance une requête HTTP,
- Une fonction qui analyse le résultat et le stock dans une structure,
ET surtout tu dois garder un repère des pages downloadées, sinon tu risques de le faire plusieurs fois.

Pour la requête HTTP, il faut utiliser:

use LWP::Simple; ' C est bien du PERL 5
use URI::URL;

my $url = url(' http://myadresse') ;
$contenu = get($url);

Demande si tu veux une autre aide

et sinon, je crois que le bouquin Perl en action d'o reilly peut t'aider sur le sujet.

Jean-Philippe

Répondre à jphilippe

6

louise, le 3 jan 2002 à 22:12:09

Je te remercie pour les conseils... Je vais essayer de me débrouiller avec ca (demain car là c'est trop tard pour travailler !!!). Si j'ai à nouveau besoin d'aide, je t'enverrai un mail avec ce que j'ai déjà fait pour que tu aies une idée...
Merci encore et bonne année !

Répondre à louise

7

Bobinours, le 4 jan 2002 à 03:07:14

Pas mal comme projet.

C'est exactement ce que j'ai fait pour un script perso. Il se connecte à un forum, recupère le lien de chaque nouveau topic puis recupère la page correspondante (Pour visualisation Off-Line).

jphilippe t'as donné de bonne base, il reste pas mal de choses après comme de parser (découper? diviser?) la page. Pour trouver le texte des liens précis.

Comment est constituée la base ? C'est une page web ? Une simple liste ?...

-= Bobinours =-

Répondre à Bobinours

8

jphilippe, le 4 jan 2002 à 13:08:53

Pas de soucis, n'hésite pas.

Jean-Philippe

Répondre à jphilippe

3

jphilippe, le 3 jan 2002 à 17:39:12

NB: si tu as un proxy, ca ne sera pas aussi simple

Répondre à jphilippe

4

sebsauvage, le 3 jan 2002 à 17:55:11

Si c'est juste pour récupérer un site web complet,
HTTrack est excellent
(très rapide, gratuit, sans pub):

http://www.httrack.com/

Ensuite, facile de les passer dans une moulinette perl ou Python.

Répondre à sebsauvage

10

MisterJA, le 14 déc 2007 à 07:07:42

Bonjour
J'ai lu ton message (qui date de 2002 mais bon ^^ ) :

("
Si c'est juste pour récupérer un site web complet,
HTTrack est excellent
(très rapide, gratuit, sans pub):

http://www.httrack.com/

Ensuite, facile de les passer dans une moulinette perl ou Python."
")

et j'ai télécharger HTTrack.
Je suis débutant en la matière et j'aurais besoin d'analyser de pages web avec python ( je viens juste de débuter python aussi ), je voudrais récupérer les informations essentiels des pages ( liens, tag, adresse, webmasters... ).
J'aurais voulu savoir si tu pouvais m'aider.

Merci d'avance, MisterJA

Répondre à MisterJA

11

MisterJA, le 14 déc 2007 à 08:40:24

Bonjour
J'ai lu ton message (qui date de 2002 mais bon ^^ ) :

("
Si c'est juste pour récupérer un site web complet,
HTTrack est excellent
(très rapide, gratuit, sans pub):

http://www.httrack.com/

Ensuite, facile de les passer dans une moulinette perl ou Python."
")

et j'ai télécharger HTTrack.
Je suis débutant en la matière et j'aurais besoin d'analyser de pages web avec python ( je viens juste de débuter python aussi ), je voudrais récupérer les informations essentiels des pages ( liens, tag, adresse, webmasters... ).
J'aurais voulu savoir si tu pouvais m'aider.

Merci d'avance, MisterJA

Répondre à MisterJA

12

sebsauvage, le 14 déc 2007 à 09:27:58

Tu trouvera des exemples de récupération et analyse de page web là:
http://sebsauvage.net/python/snyppets/index.html

Les expressions régulières peuvent faire l'affaire, ou encore le module BeautifulSoup (exemple dans ma page).

Répondre à sebsauvage

13

MisterJA, le 14 déc 2007 à 09:43:28

Merci je vais voir ce que je peux faire avec ça.

A plus

Répondre à MisterJA

9

jphilippe, le 4 jan 2002 à 20:36:46

J'ai réfléchi à ton problème, mais je ne suis pas certain que cela soit vraiment celui là.

Pour moi, si je le résume bien, ton problème consiste à downloader un site en local pour surfer dessus.

La décomposition du problème se résume ainsi pour moi :

- Une fonction qui va effectuer une requête HTTP pour récupérer l'élément
- Une fonction qui décompose une page html en liste de liens
- Une liste qui permet de gérer les liens (downloader, à downloader)
- Une fonction qui recompose une page html downloader avec les éléments downloader (remplace les liens vers le disque dur)

Je ne suis pas doué dans la gestion des objects PERL 5, mais je pense qu'il faudrait y passer pour gérer proprement le problème (la liste par exemple devrait être un objet, pareil pour la notion d'url, cela permettrait de faire des comparaisons, etc...).

Je ne connais pas les bibliothèques standard, mais je suppose que tout cela existe en partie.

L'utilisation de la fonction récursive est à mon avis une connerie, je verrais plutot une gestion autour de la liste (tant qu'il y a un élément, je vais chercher une donnée, si c'est une page html, je la décompose pour trouver les url qui la constitue, j'enregistre les url dans ma liste (sauf si l'url existe déjà), et j'enregistre la donnée sur disque dur, ... et à la fin, je reparcour la liste pour changer les données sur le disque local pour remettre les liens au gout du jour)

J'ai peur qu'avec le récursif, on se trouve vite bloquer pour faire évoluer. Maintenant, si c'est l'exercice, il faut faire attention à ne pas downloader 20 fois la même chose et surtout éviter les références circulaires (d'ou la liste).

Voilà,
Bonne année à toi aussi

Répondre à jphilippe

14

Ne Bouya Ould Ahmed, le 11 mai 2008 à 13:12:20

Bonjour,
Je veux une definition de Credit Default Swap(CDS).

Répondre à Ne Bouya Ould Ahmed

15

 sakura, le 13 jui 2009 à 04:43:48

Salut à tous,

Je dois récupérer le contenu html d'un site web à partir de l'url en python, pour faire ça, j'ai pensé à d'abord récupérer l'arborescence du site, puis faire une boucle afin de récupérer le contenu html à partir des liens, mais en python , je ne sais pas comment le faire .

merci d'avance

Répondre à sakura