Perl : extraction de textes sur le web

Fermé
louise - 3 janv. 2002 à 16:19
 sakura - 13 juil. 2009 à 04:43
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 !
A voir également:

7 réponses

jphilippe Messages postés 78 Date d'inscription dimanche 7 octobre 2001 Statut Membre Dernière intervention 31 janvier 2002 6
3 janv. 2002 à 17:36
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
2
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 !
0
Bobinours Messages postés 2898 Date d'inscription jeudi 26 avril 2001 Statut Membre Dernière intervention 21 mars 2013 504 > louise
4 janv. 2002 à 03:07
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 =-
0
jphilippe Messages postés 78 Date d'inscription dimanche 7 octobre 2001 Statut Membre Dernière intervention 31 janvier 2002 6 > louise
4 janv. 2002 à 13:08
Pas de soucis, n'hésite pas.

Jean-Philippe
0
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 655
3 janv. 2002 à 16:33
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 ?)
0
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.
0
jphilippe Messages postés 78 Date d'inscription dimanche 7 octobre 2001 Statut Membre Dernière intervention 31 janvier 2002 6
3 janv. 2002 à 17:39
NB: si tu as un proxy, ca ne sera pas aussi simple
0
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 655
3 janv. 2002 à 17:55
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.
0
MisterJA Messages postés 5 Date d'inscription jeudi 13 décembre 2007 Statut Membre Dernière intervention 3 janvier 2008
14 déc. 2007 à 07:07
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
0
MisterJA Messages postés 5 Date d'inscription jeudi 13 décembre 2007 Statut Membre Dernière intervention 3 janvier 2008
14 déc. 2007 à 08:40
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
0
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 655 > MisterJA Messages postés 5 Date d'inscription jeudi 13 décembre 2007 Statut Membre Dernière intervention 3 janvier 2008
14 déc. 2007 à 09:27
Tu trouvera des exemples de récupération et analyse de page web là:
https://sebsauvage.net/python/snyppets/index.html

Les expressions régulières peuvent faire l'affaire, ou encore le module BeautifulSoup (exemple dans ma page).
0
MisterJA Messages postés 5 Date d'inscription jeudi 13 décembre 2007 Statut Membre Dernière intervention 3 janvier 2008 > sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019
14 déc. 2007 à 09:43
Merci je vais voir ce que je peux faire avec ça.

A plus
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jphilippe Messages postés 78 Date d'inscription dimanche 7 octobre 2001 Statut Membre Dernière intervention 31 janvier 2002 6
4 janv. 2002 à 20:36
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
0
Ne Bouya Ould Ahmed
11 mai 2008 à 13:12
Bonjour,
Je veux une definition de Credit Default Swap(CDS).
0
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
0