Récuperer des infos depuis des sites web

Fermé
CCM - 27 mai 2008 à 10:57
 -CCM- - 16 juil. 2008 à 17:06
Bonjour,

Je souhaite automatiser un système de récupération de données:

Je voudrais récupérer des données, des parties de pages web, provenant de plusieurs sites web.
J'ai vu des post semblables mais en ce qui me concerne c'est un peu plus délicat et totalement different.

Les données se trouvent sur des pages avec des liens du type " http://www.undomaine.dh/notes/995217.php"
Le nom de la page php " 995217.php " varie à chaque fois et il n'est pas prévisible.

Voyez vous une solutions?

Merci à vous.

36 réponses

sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 655
27 mai 2008 à 11:56
En programmant ça soi-même.

(récupérer la page html, examiner le code html pour extraire les liens, aller chercher les liens suivants, etc.)

Quelques exemples:
https://sebsauvage.net/python/snyppets/index.html#getlinks1
https://sebsauvage.net/python/snyppets/index.html#google_search
0
Merci seb, mais les exemples que tu me donne servent à récupérer tout les liens d'une page html et pas les données?
Moi il faudrait donc récupérer les données de certaines pages.
J'ai entendu parler sur CCM des "expression régulières" mais il faut connaitre à l'avance l'url du site et il ne faut pas la modifier pour extraire les données, n'est ce pas?
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
27 mai 2008 à 13:11
Merci seb, mais les exemples que tu me donne servent à récupérer tout les liens d'une page html et pas les données?

Les données sont souvent présentées sous forme de page HTML, non ?
Il suffit donc de les extraire de la page HTML.

Par exemple avec les expressions régulières, oui.
D'ailleurs il y en a un exemple dans le premier lien que j'ai donné.


mais il faut connaitre à l'avance l'url du site

Si tu ne sais pas quel site tu veux récupérer, je ne peux pas t'aider.


il ne faut pas la modifier pour extraire les données, n'est ce pas?

Modifier quoi ?
A partir du moment où tu as récupéré une page HTML, il te suffit d'examiner le code HTML pour:
- récupérer les données qui t'intéressent dedans
- extraire les liens vers d'autres pages.
0
Je me suis peut être mal exprimer ...

Je vais essayer de t'expliquer avec un cas concret, prenons pour exemple un site de petites annonces :

Je connais l'url du site www.jannonceDESannonces.an qui publie chaque jours plusieurs annonces :

www.jannonceDESannonces.an/voiturebleu45.html
www.quoiqu'annonceuses.an/velorouge27mai.html
www.jannonceDESannonces.an/consoleTOP.html
www.jannonceDESannonces.an/belles_maison/superbe_baraque34.html

Et je voudrais donc par exemple extraire, les titres, les descriptions et les coordonnées de chaque annonces, pour les stocké et les publiées après un tri...
Sachant que les url du type " www.jannonceDESannonces.an/consoleTOP.html " ne sont pas connus à l'avance. Il sont créés au fur et a mesure.

(dans mon cas réel, bien entendu il ne s'agit pas de données personnelles)

Comment je doit procéder?
0

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

Posez votre question
J'essaye de jeter un coups d'œil sur ton code, c'est quoi comme langage c'est du python ça??? (sa ressemble un peu au C ++ )
Comment tu l'implémente? tu le places dans ta page html ? avec ou sans balises spécifiques?
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
27 mai 2008 à 15:07
Sachant que les url du type " www.jannonceDESannonces.an/consoleTOP.html " ne sont pas connus à l'avance. Il sont créés au fur et a mesure.

La structure de chaque site étant différente, il faudra développer un programme pour chaque site.
0
Ok pas de problème, c'est comme des d'agents qui vont chercher des données...?

Comment implémenter ton code pour faire des premiers testes? (ou le placer ? dans une page html?)
J'ai aussi vu une fonction mais, uniquement sous win,--> URLDownloadToFile, sa peut pas m'aider?
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
27 mai 2008 à 15:17
c'est comme des d'agents qui vont chercher des données...?

oui.



Comment implémenter ton code pour faire des premiers testes? (ou le placer ? dans une page html?)

Dans un fichier texté nommé en .py que tu lancera avec Python (une fois installé).


URLDownloadToFile

Je ne sais pas de quel langage/librairie il s'agit, mais a priori urllib2 de Python fait la même chose.
0
Ok..
Donc, j'installe python (je ne sais pas encore ce que c'est, je pensai que c'était juste un langage)
Je crée un fichier python pour un site donnée et je refait sur la même base, les autres...
Comment ils seront exécuté, ou seront enregistré mes données?
Aurait-tu stp, une amorce sur laquelle je pourrais m'inspirer, je ne suis pas du tout développeur et le python je viens de (ou plutôt je vais) découvrir !!

MErci
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
27 mai 2008 à 16:43
je pensai que c'était juste un langage

C'est un langage de programmation.


Je crée un fichier python pour un site donnée et je refait sur la même base, les autres...

Tout à fait !


Comment ils seront exécuté

python monprogramme.py


ou seront enregistré mes données?

ça dépend où tu programmera l'enregistrement des données (fichier texte, cvs, base de données...)


je ne suis pas du tout développeur

Tu peux regarder là:
http://www.commentcamarche.net/faq/sujet 457 comment debuter quel langage#python

Il y a tout ce qu'il faut pour apprendre Python.

C'est une bonne occasion pour apprendre à programmer !
0
En faisant un petit algorithme ou plutôt un petit schéma je me rends compte que sa va être trop lourd a gérer.

J'aurais :

1- un code pour récupérer les liens
2- un code pour garder les liens qui me sont intéressants
3- un code pour extraire le contenu

Ma recherche est schématisé de la manière suivante :

1er Portail avec plusieurs liens
lien 1 plein d'infos
lien 2 plein d'infos
lien ... plein d'infos
lien 40 plein d'infos

2em Portail avec plusieurs liens
lien 1 plein d'infos
lien 2 plein d'infos
lien ... plein d'infos
lien 40 plein d'infos

...
...

10em Portail avec plusieurs liens
lien 1 plein d'infos
lien 2 plein d'infos
lien ... plein d'infos
lien 40 plein d'infos


Si j'ai bien compris le truc, en gros je devrais avoir executé:

le code 1- pour récupérer les liens ----------------------------------------10 fois
le code 2- pour garder les liens qui me sont intéressants-- -40 x 10 fois
le code 3- pour extraire le contenu -------------------------------40 x 10 fois

code1
[code]
import re, urllib
htmlSource = urllib.urlopen("http://www.monsiteweb4.mw/site/").read(200000)
linksList = re.findall('<a href=(.*?)>.*?</a>',htmlSource)
for link in linksList:
print link
/code

code3
[code]
#!/usr/bin/python
# -*- coding: iso-8859-1 -*-
import urllib, sys, xml.dom.minidom
adresse = 'http://www.monsiteweb4.mw/site/lien37.html'
document = xml.dom.minidom.parse(urllib.urlopen(adresse))
for item in document.getElementsByTagName('item'):
titre = item.getElementsByTagName('title')[0].firstChild.data
identifiant= item.getElementsByTagName('ID')[0].firstChild.data
variable1 = item.getElementsByTagName('var1')[0].firstChild.data
variable2 = item.getElementsByTagName('var2')[0].firstChild.data
....
print "Titre: %s" % titre.encode('latin-1','replace')
print "Identifiant: %s" % identifiant.encode('latin-1','replace')
....
/code

Sa fait beaucoup sachant que sa doit être fait quotidiennement ! Je doit laisser tomber le python? c'est pas lourd a gérer?
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
27 mai 2008 à 23:14
Sa fait beaucoup sachant que sa doit être fait quotidiennement !

Bien sûr que ça fait beaucoup
Les portails contiennent des milliers de liens.

Vouloir les récupérer quotidiennement, c'est de la folie.
0
Je peut avoir ton avis? (ou celui de quelqu'un d'autre )
Comment tu ferais si tu doit récupérer à partir de plusieurs site, des infos du type texte?

Cette recherche doit s'effectuer quotidiennement sur une dizaine de site.

Les données doivent être extraites, sauvées pour pouvoir ensuite faire un tri.

Quelle architecture (de préférence logiciel libre) me proposerais tu?
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
28 mai 2008 à 10:12
Comment tu ferais si tu doit récupérer à partir de plusieurs site, des infos du type texte?

Exactement comme j'ai montré en Python.
D'ailleurs je le fais plusieurs fois par semaine: Je récupère l'intégralité de la base de connaissance de CCM sous forme de fichier zip.
C'est un script Python fait maison qui me fait le boulot de parcourir les différentes pages, récupérer la liste des article de chaque page, puis aller me cherche chaque article, en extraire le texte, aller télécharger les images contenues dans chaque article, et enfin assembler les articles sous forme de fichiers et construire un indexe.
(Inutile de demander, je ne donnerai pas le programme.)


Cette recherche doit s'effectuer quotidiennement sur une dizaine de site.
Les données doivent être extraites, sauvées pour pouvoir ensuite faire un tri.


La question est: Combien de page de chaque site veux-tu examiner chaque jour ?
Il y a une limite au delà de laquelle ce n'est pas réaliste.
Et ça dépend également du site.
0
(Inutile de demander, je ne donnerai pas le programme.)

Merci quand même, mais je ne suis pas la pour te demander un programme (d'ailleurs je ne pense pas avoir demandé de prog jusqu'à présent...)
Je veut juste réaliser moi même ma propre application.

Pour les pages des sites:
Il y a une dizaine de site de ce genre https://helpx.adobe.com/security.html et je veut récupérer les données des bulletin pour surveiller les vulnérabilités de mon petit parc informatique.
Chaque bulletin represente une page.
Et ceux pour une dizaine de sites.
Environ 10 sites x 15 bulletin pour diminuer un peu
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
28 mai 2008 à 10:44
je veut récupérer les données des bulletin pour surveiller les vulnérabilités de mon petit parc informatique.

Il y a nettement plus simple: Des sites comme SANS, CERT ou CERTA publient les bulletins de sécurité pour la majorité des vendeurs/éditeurs de logiciels.
En prime, ils ont généralement un flux RSS.
Ou bien c'est sous forme d'abonnement (payant).

Aggréger des flux RSS est nettement plus simple (il y a des logiciels prévus pour ça), et avec un simple filtre sur le nom des appli, tu es prévenu que de ce qui t'intéresse.

https://www.sans.org/
https://www.sei.cmu.edu/about/divisions/cert/index.cfm
https://www.cert.ssi.gouv.fr/
0
Merci, c'est exactement ce que je veut faire, mais je peu donc sauvegarder et stocker les données contenus dans les bulletins publés en RSS ?
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
28 mai 2008 à 11:05
Oui tu peux.
Ceci, il me semble que le flux RSS de certains de ces sites est payant. à voir.
0
j'ai trouver pas mal d'explication sur les rss / xml
quelques fonctions php : https://www.php.net/manual/fr/ref.xml.php
Mais par contre on nous propose d'extraire que le contenu des flux rss , titre, description, date... (les flux ne contiennent pas toutes les informations que je veut extraire). Tu me confirme bien qu'à partir d"un flux RSS on peu en extraire toutes les données de la page dont il fait référence. Et pas seulement les données publiées par ce flux.

As tu quelque liens en tête, vers des tutaux, exemples ou autres infos? j'ai pas trouver grand chose sur l'extraction ..
Merci
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
28 mai 2008 à 12:51
Tu me confirme bien qu'à partir d"un flux RSS on peu en extraire toutes les données de la page dont il fait référence.

Si le flux contient pour chaque <item> un lien vers la page (<link>), il suffit d'aller chercher la page à l'URL indiquée pour avoir toutes les infos.


As tu quelque liens en tête, vers des tutaux, exemples ou autres infos? j'ai pas trouver grand chose sur l'extraction ..

Exemple pour RSS 2.0 (mais il y a plusieurs format RSS sur internet):
https://sebsauvage.net/python/snyppets/index.html#parse_rss
0