Récuperer des infos depuis des sites web
Fermé
CCM
-
27 mai 2008 à 10:57
-CCM- Messages postés 927 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 16 juin 2013 - 16 juil. 2008 à 17:06
-CCM- Messages postés 927 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 16 juin 2013 - 16 juil. 2008 à 17:06
A voir également:
- Récupérer sur internet
- Comment recuperer un message supprimé sur whatsapp - Guide
- Recuperer video youtube - Guide
- Comment récupérer un compte facebook piraté - Guide
- Gps sans internet - Guide
- Récupérer photo instagram - Guide
36 réponses
Merci, j'avais déjà mis la main sur ton code depuis ce post, j'avais commencer a réfléchir dessus :
http://www.commentcamarche.net/forum/affich 2327323 web service recuperer des donnees web
address = 'http://www.sebsauvage.net/rss/updates.xml'
document = xml.dom.minidom.parse(urllib.urlopen(address))
Il faudra rendre la variable "address" dynamique pour ne pas la rentrer en dur.
Je doit faire en sorte ,que les url varient automatiquement en fonction des pages.
J'ai une vingtaine de flux rss, chaque flux contient 5 articles.
J'ai donc une centaine de liens. Et le lendemain, rebelotte, les url changent a nouveau...
Il faut donc mettre au point un script qui va récupérer les liens de ma page web igoogle (contenant tout les flux RSS) , supprimer les liens inutile du type https://accounts.google.com/ServiceLogin?passive=1209600&continue=https%3A%2F%2Faccounts.google.com%2FManageAccount&followup=https%3A%2F%2Faccounts.google.com%2FManageAccount .... et ensuite passé a la moulinette chaque lien trouvé dans le script de récupération de données.
Sachant qu'il existe pour un site , certain nom de champs
for item in document.getElementsByTagName('item'):
Qu'il n'existera plus sur un autre site.... Sa me donnera un code de 200 lignes environ si l'on compte tout les champs pour chaque sites? A repasé autant de fois qu'il y aura de lien sur ma page Igoogle.
Soit j'ai tout faux, soit je vais dans la bonne direction ?
http://www.commentcamarche.net/forum/affich 2327323 web service recuperer des donnees web
address = 'http://www.sebsauvage.net/rss/updates.xml'
document = xml.dom.minidom.parse(urllib.urlopen(address))
Il faudra rendre la variable "address" dynamique pour ne pas la rentrer en dur.
Je doit faire en sorte ,que les url varient automatiquement en fonction des pages.
J'ai une vingtaine de flux rss, chaque flux contient 5 articles.
J'ai donc une centaine de liens. Et le lendemain, rebelotte, les url changent a nouveau...
Il faut donc mettre au point un script qui va récupérer les liens de ma page web igoogle (contenant tout les flux RSS) , supprimer les liens inutile du type https://accounts.google.com/ServiceLogin?passive=1209600&continue=https%3A%2F%2Faccounts.google.com%2FManageAccount&followup=https%3A%2F%2Faccounts.google.com%2FManageAccount .... et ensuite passé a la moulinette chaque lien trouvé dans le script de récupération de données.
Sachant qu'il existe pour un site , certain nom de champs
for item in document.getElementsByTagName('item'):
Qu'il n'existera plus sur un autre site.... Sa me donnera un code de 200 lignes environ si l'on compte tout les champs pour chaque sites? A repasé autant de fois qu'il y aura de lien sur ma page Igoogle.
Soit j'ai tout faux, soit je vais dans la bonne direction ?
J'ajoute que
sur ma page igoogle, j'ai un lien par exemple qui pointe vers --> https://www.securityfocus.com/bid/28392
Et le code source de cette même page le lien est le suivant --> href="#" onclick="return _del('7',25,'url=http://www.securityfocus.com/rss/vulnerabilities.xml')
En gros je ne récupère pas les liens de mes pages !! :(
sur ma page igoogle, j'ai un lien par exemple qui pointe vers --> https://www.securityfocus.com/bid/28392
Et le code source de cette même page le lien est le suivant --> href="#" onclick="return _del('7',25,'url=http://www.securityfocus.com/rss/vulnerabilities.xml')
En gros je ne récupère pas les liens de mes pages !! :(
Debut de mon code
Voila mes premières ligne de python... qu'en pense tu?
Où est-ce que tu va récupérer les noms des items? (ici j'ai mit des noms au pif (date product, title, desc ...)
#!/usr/bin/python # -*- coding: iso-8859-1 -*- import urllib, sys, xml.dom.minidom eeye = ‘https://www.beyondtrust.com/resources’ red = ‘http://www.red-database-security.com/advisory/published_alerts.xml’ securityfocus = ‘https://www.securityfocus.com/rss/vulnerabilities.xml’ securitydotnews = ‘http://securitydot.net/rss/news.xml’ securitydotvuln = ‘http://securitydot.net/rss/vulnerabilities.xml’ securitylab = ‘https://www.securitylab.ru/_services/export/rss/notification.php’ idefens = ‘http://labs.idefense.com/rss/intelligence.rss.php?type=vulnerabilities’ zdi = ‘http://feeds.feedburner.com/ZDI-Published-Advisories’ idg = ‘http://feeds.feedburner.com/idg_fr/rt2/virus-alertes/rss’ doceeye = xml.dom.minidom.parse(urllib.u'rlopen(eeye)) docred = xml.dom.minidom.parse(urllib.urlopen(red)) docsecurityfocus = xml.dom.minidom.parse(urllib.urlopen(securityfocus)) docsecuritydotnews = xml.dom.minidom.parse(urllib.urlopen(securitydotnews)) docsecuritydotvuln = xml.dom.minidom.parse(urllib.urlopen(securitydotnews)) docsecuritylab = xml.dom.minidom.parse(urllib.urlopen(securitylab)) docidefens = xml.dom.minidom.parse(urllib.urlopen(idefens)) doczdi = xml.dom.minidom.parse(urllib.urlopen(zdi)) docidg = xml.dom.minidom.parse(urllib.urlopen(idg)) for item in doceeye.getElementsByTagName('item'): titre = item.getElementsByTagName('title')[0].firstChild.data description = item.getElementsByTagName('desc')[0].firstChild.data date = item.getElementsByTagName('date')[0].firstChild.data produit = item.getElementsByTagName('product')[0].firstChild.data print "Titre: %s" % titre.encode('latin-1','replace') for item in docred.getElementsByTagName('item'): titre = item.getElementsByTagName('title')[0].firstChild.data description = item.getElementsByTagName('desc')[0].firstChild.data date = item.getElementsByTagName('date')[0].firstChild.data produit = item.getElementsByTagName('product')[0].firstChild.data print "Titre: %s" % titre.encode('latin-1','replace') for item in dosecurityfocus.getElementsByTagName('item'): titre = item.getElementsByTagName('title')[0].firstChild.data description = item.getElementsByTagName('desc')[0].firstChild.data date = item.getElementsByTagName('date')[0].firstChild.data produit = item.getElementsByTagName('product')[0].firstChild.data print "Titre: %s" % titre.encode('latin-1','replace') for item in docdotnews.getElementsByTagName('item'): titre = item.getElementsByTagName('title')[0].firstChild.data description = item.getElementsByTagName('desc')[0].firstChild.data date = item.getElementsByTagName('date')[0].firstChild.data produit = item.getElementsByTagName('product')[0].firstChild.data print "Titre: %s" % titre.encode('latin-1','replace')
Voila mes premières ligne de python... qu'en pense tu?
Où est-ce que tu va récupérer les noms des items? (ici j'ai mit des noms au pif (date product, title, desc ...)
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 à 16:05
28 mai 2008 à 16:05
Grosso-modo, c'est ça.
Mais c'est bien d'utiliser des tableaux plutôt que de recopier le code à chaque fois.
Où est-ce que tu va récupérer les noms des items?
Le nom des logiciels impactés ne fait pas partie de la norme RSS.
RSS ne permet que de donner titre, résumé, lien, date (grosso-modo).
Après chaque site de sécurité possède ses pages propre, avec des structures différentes pour chaque.
Chaque site fait à sa sauce, et tu ne pourra pas faire autrement que de faire des développements spécialisés pour chaque site.
(Chaque site diffuse peut-être un flux dans un format particulier, avec plus de détails. Ou pire: ils n'ont pas de flux plus détaillé: il faudra aller interpréter leurs pages HTML pour en extraire le contenu.)
Bon courage !
Mais c'est bien d'utiliser des tableaux plutôt que de recopier le code à chaque fois.
Où est-ce que tu va récupérer les noms des items?
Le nom des logiciels impactés ne fait pas partie de la norme RSS.
RSS ne permet que de donner titre, résumé, lien, date (grosso-modo).
Après chaque site de sécurité possède ses pages propre, avec des structures différentes pour chaque.
Chaque site fait à sa sauce, et tu ne pourra pas faire autrement que de faire des développements spécialisés pour chaque site.
(Chaque site diffuse peut-être un flux dans un format particulier, avec plus de détails. Ou pire: ils n'ont pas de flux plus détaillé: il faudra aller interpréter leurs pages HTML pour en extraire le contenu.)
Bon courage !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
RSS ne permet que de donner titre, résumé, lien, date (grosso-modo).
Donc il faut que je laisse tomber les RSS, trop pauvre en informations.... Il faudrai que je me rende sur les sites directement.
Après chaque site de sécurité possède ses pages propre, avec des structures différentes pour chaque.
Le problème c'est comme je l'avais expliqué tout à l'heure, on ne connais pas les URL exacte pour extraire des informations.
Les urls sont du type
Sa sous entendrais qu'il faut que j'aille consulter la page, que je prenne l'url, que je developpe un petit agent pour cette page spécifique et ce pour chaque page !! Non?
Donc il faut que je laisse tomber les RSS, trop pauvre en informations.... Il faudrai que je me rende sur les sites directement.
Après chaque site de sécurité possède ses pages propre, avec des structures différentes pour chaque.
Le problème c'est comme je l'avais expliqué tout à l'heure, on ne connais pas les URL exacte pour extraire des informations.
Les urls sont du type
www.securityblablabla.com/vulnerabilite/xpsp2/bugNum97812.htmlet varient a chaque page!
Sa sous entendrais qu'il faut que j'aille consulter la page, que je prenne l'url, que je developpe un petit agent pour cette page spécifique et ce pour chaque page !! Non?
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 à 16:44
28 mai 2008 à 16:44
Je suggère:
Que tu utilise le flux RSS du site.
Pour chaque nouvel ITEM: aller cherche la page HTML indiquée dans le LINK,
puis extraire de cette page HTML ce qui t'intéresse (n°version, etc.)
Que tu utilise le flux RSS du site.
Pour chaque nouvel ITEM: aller cherche la page HTML indiquée dans le LINK,
puis extraire de cette page HTML ce qui t'intéresse (n°version, etc.)
-CCM-
Messages postés
927
Date d'inscription
mercredi 28 mai 2008
Statut
Membre
Dernière intervention
16 juin 2013
84
28 mai 2008 à 16:48
28 mai 2008 à 16:48
Mes flux rss ne me retournent aucun LINK ! Je n'ai pas l'adresse des articles qui apparait dans la source de ma page contenant les flux.
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 à 16:58
28 mai 2008 à 16:58
Si je prend celui-là:
http://www.red-database-security.com/advisory/published_alerts.xml
Je vois:
Il y a bien des balises link.
Idem pour les autres.
Tu as peut-être entré LINK en majuscules ?
http://www.red-database-security.com/advisory/published_alerts.xml
Je vois:
<item> <title>SQL Injection in SYS.KUPV$FT_INT in Oracle 10g. Rel. 1</title> <pubDate>17 Jan 2006 18:00:00 GMT</pubDate> <link>http://www.red-database-security.com/advisory/oracle_sql_injection_kupv$$ft_int.html</link> </item> <item> <title>Event 10053 logs TDE wallet password in cleartext</title> <pubDate>17 Jan 2006 13:00:00 GMT</pubDate> <link>http://www.red-database-security.com/advisory/oracle_tde_wallet_password.html</link> </item> <item> <title>Transparent Data Encryption stores key unencrypted in the SGA</title> <pubDate>17 Jan 2006 13:00:00 GMT</pubDate> <link>http://www.red-database-security.com/advisory/oracle_tde_unencrypted_sga.html</link> </item>
Il y a bien des balises link.
Idem pour les autres.
Tu as peut-être entré LINK en majuscules ?
-CCM-
Messages postés
927
Date d'inscription
mercredi 28 mai 2008
Statut
Membre
Dernière intervention
16 juin 2013
84
28 mai 2008 à 17:05
28 mai 2008 à 17:05
Il faudra m'expliquer comment tu fais pour afficher les link..
moi je fais clic droit - afficher la source et j'ai ce genre de code html :
Comment fait tu apparaitre les link ??? Merci
moi je fais clic droit - afficher la source et j'ai ce genre de code html :
<div id="m_1_b" class="modboxin" style="height:px;"><script>var FEED1 = {has_entries : false,is_fetching: false,url:"http://www.red-database-security.com/advisory/published_alerts.xml",num_items:3};</script><div id="ftl_1_0" class="uftl"><a href='javascript:void(0)' title="" id='ft_1_0' class='fmaxbox' onclick='_IG_FR_toggle(1, 0)'></a><a href="http://www.red-database-security.com/advisory/oracle_sql_injection_kupv$$ft.html" title="">SQL Injection in SYS.KUPV$FT in Oracle 10g. Rel. 1</a><br><div id="fb_1_0" class='fpad fb' style='display:none'><div id=fb_1_1633096192306216205 >Informations temporairement indisponibles.</div></div></div><div id="ftl_1_1" class="uftl"><a href='javascript:void(0)' title="" id='ft_1_1' class='fmaxbox' onclick='_IG_FR_toggle(1, 1)'></a><a href="http://www.red-database-security.com/advisory/oracle_sql_injection_kupv$$ft_int.html" title="">SQL Injection in SYS.KUPV$FT_INT in Oracle 10g. Rel. 1</a><br><div id="fb_1_1" class='fpad fb' style='display:none'>
Comment fait tu apparaitre les link ??? Merci
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 à 17:07
28 mai 2008 à 17:07
euh... tu as quoi comme navigateur ?
http://www.red-database-security.com/advisory/published_alerts.xml
quand je fais "voir le code source", j'obtiens ce que j'ai montré plus haut.
Je n'obtient pas du HTML mais de l'XML.
Je te suggère de changer de navigateur. Prend Firefox.
http://www.red-database-security.com/advisory/published_alerts.xml
quand je fais "voir le code source", j'obtiens ce que j'ai montré plus haut.
Je n'obtient pas du HTML mais de l'XML.
Je te suggère de changer de navigateur. Prend Firefox.
-CCM-
Messages postés
927
Date d'inscription
mercredi 28 mai 2008
Statut
Membre
Dernière intervention
16 juin 2013
84
28 mai 2008 à 17:14
28 mai 2008 à 17:14
heuuu J'ai bien firefox .....
Le code source de la page :
c'est :
pour ma part ...
Enfaite sa me renvoi sur cette page : https://www.google.com
Le code source de la page :
http://www.red-database-security.com/advisory/published_alerts.xml
c'est :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><title>Personnalisez votre page d'accueil</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><link this.base_iframe_url == ""; };this.is_zipped = is_zipped;};var remote_modules = [];_IG_RegisterOnloadHandler(function() {for (var i=0;i<remote_modules.length;i++){var rm=remote_modules[i];var ........ href="/support/?ctx=web&hl=">Aide</a> - <a href="/intl/fr/about.html">À propos de Google</a> - <a href="https://www.google.com">iGoogle in English</a><br><br><br><br><span class="copyr">©2008 Google</span></div></td></tr></table></form></body></html>
pour ma part ...
Enfaite sa me renvoi sur cette page : https://www.google.com
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 à 21:39
28 mai 2008 à 21:39
Quand la page http://www.red-database-security.com/advisory/published_alerts.xml
est affichée, comme recupère-tu le code source ?
Enregistrer-sous, ou bien clic-droit > voir le code source.
est affichée, comme recupère-tu le code source ?
Enregistrer-sous, ou bien clic-droit > voir le code source.
Salut,
je ne sais pas comment tu te débrouille pour afficher la page.
Quand je clic sur le lien sa me redirige sur https://www.google.com
si je rentre l'url dans ma barre d'adresse sa me redirige aussi vers https://www.google.com
ouvrir dans un nouvel onglet, c'est pareil... redirection... Comment ouvre tu cette page? il n'y a pas de redirection vers un lecteur rss dans ton cas?
je ne sais pas comment tu te débrouille pour afficher la page.
Quand je clic sur le lien sa me redirige sur https://www.google.com
si je rentre l'url dans ma barre d'adresse sa me redirige aussi vers https://www.google.com
ouvrir dans un nouvel onglet, c'est pareil... redirection... Comment ouvre tu cette page? il n'y a pas de redirection vers un lecteur rss dans ton cas?
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 655
>
CCM
30 mai 2008 à 10:01
30 mai 2008 à 10:01
tu as dû cocher un truc dans Firefox pour utiliser automatiquement Google pour afficher le flux.
Va dans les options de firefox et sélectionne ça:
https://imageshack.com/
Va dans les options de firefox et sélectionne ça:
https://imageshack.com/
-CCM-
Messages postés
927
Date d'inscription
mercredi 28 mai 2008
Statut
Membre
Dernière intervention
16 juin 2013
84
30 mai 2008 à 10:33
30 mai 2008 à 10:33
Ah ok, j'en étais sur que sa venais d'un lecteur rss qui se mettait en route automatiquement.
La sa va mieux, j'affiche la page avec mes link.
Recuperer les flux rss. (j'ai ma liste"statique" de flux)
------recuperer tout mes link, (recuperer les link qui sont "dynamiques")
---------------pour chaque link
---------------recuperer les données (l'emplacement des données est different d'un site a un autre)
------fin des link de la page
fin des pages
La sa va mieux, j'affiche la page avec mes link.
Recuperer les flux rss. (j'ai ma liste"statique" de flux)
------recuperer tout mes link, (recuperer les link qui sont "dynamiques")
---------------pour chaque link
---------------recuperer les données (l'emplacement des données est different d'un site a un autre)
------fin des link de la page
fin des pages
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 655
30 mai 2008 à 10:40
30 mai 2008 à 10:40
Ton algo me semble ok.
Pour extraire des infos d'une page HTML, il y a plusieurs méthodes (expressions régulières, BeautifulSoup, etc.)
Le choix est libre.
Quelques exemples:
https://sebsauvage.net/python/snyppets/index.html#getlinks1
https://sebsauvage.net/python/snyppets/index.html#getlinks2
https://sebsauvage.net/python/snyppets/index.html#getlinks3
https://sebsauvage.net/python/snyppets/index.html#getlinks4
Pour extraire des infos d'une page HTML, il y a plusieurs méthodes (expressions régulières, BeautifulSoup, etc.)
Le choix est libre.
Quelques exemples:
https://sebsauvage.net/python/snyppets/index.html#getlinks1
https://sebsauvage.net/python/snyppets/index.html#getlinks2
https://sebsauvage.net/python/snyppets/index.html#getlinks3
https://sebsauvage.net/python/snyppets/index.html#getlinks4
-CCM-
Messages postés
927
Date d'inscription
mercredi 28 mai 2008
Statut
Membre
Dernière intervention
16 juin 2013
84
30 mai 2008 à 12:01
30 mai 2008 à 12:01
import re, urllib securityfocus = ‘https://www.securityfocus.com/rss/vulnerabilities.xml’ linksListsecurityfocus = re.findall('<a href=(.*?)>.*?</a>',securityfocus) for link in linksList: titre = item.getElementsByTagName('title')[0].firstChild.data identifiant = item.getElementsByTagName('???')[0].firstChild.data CVE = item.getElementsByTagName('???')[0].firstChild.data print "Titre: %s" % titre.encode('latin-1','replace') print "Identifiant: %s" % identifiant.encode('latin-1','replace') print "CVE: : %s" % cve.encode('latin-1','replace')
Qu'en pense tu ?
Par contre je ne trouve pas de balise pour retrouver les autres infos :
<span class="title">International Components for Unicode Library (libicu) Multiple Memory Corruption Vulnerabilities</span><br/><br/> <table cellpadding="4" cellspacing="0" border="0"> <span class="label">Bugtraq ID:</span> 27455 <span class="label">Class:</span> Unknown <tr valign="top"> <span class="label">CVE:</span> CVE-2007-4770<br/> CVE-2007-4771<br/> <span class="label">Remote:</span> Yes <span class="label">Local:</span> No <span class="label">Published:</span> Jan 25 2008 12:00AM
title pour le titre , ok, mais pour le "Bugtraq ID", le "CVE" la "Published date" , il n'y a pas de item...ou de class, comment faire ?
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 655
30 mai 2008 à 12:23
30 mai 2008 à 12:23
securityfocus = ‘https://www.securityfocus.com/rss/vulnerabilities.xml’
linksListsecurityfocus = re.findall('<a href=(.*?)>.*?</a>',securityfocus)
euh... dans les fichiers RSS, les liens sont les balises <link>, et pas <a href...>.
Par contre je ne trouve pas de balise pour retrouver les autres infos :
HTML n'utilisant que des balises "générale" (sans signification sémantique comme RSS), il faut ruser.
Par exemple pour récupérer le bugtraqID, il faut:
rechercher la balise <span> contenant le texte "Bugtraq ID:", puis prendre le texte qui suit la balise </span>, jusqu'au premier <span> suivant trouvé.
Ce cera donc à toi d'étudier la structure de chaque site pour extraire ce qu'iintéresse de leur page HTML
(en priant pour que la structure de leur page ne change pas trop souvent).
linksListsecurityfocus = re.findall('<a href=(.*?)>.*?</a>',securityfocus)
euh... dans les fichiers RSS, les liens sont les balises <link>, et pas <a href...>.
Par contre je ne trouve pas de balise pour retrouver les autres infos :
HTML n'utilisant que des balises "générale" (sans signification sémantique comme RSS), il faut ruser.
Par exemple pour récupérer le bugtraqID, il faut:
rechercher la balise <span> contenant le texte "Bugtraq ID:", puis prendre le texte qui suit la balise </span>, jusqu'au premier <span> suivant trouvé.
Ce cera donc à toi d'étudier la structure de chaque site pour extraire ce qu'iintéresse de leur page HTML
(en priant pour que la structure de leur page ne change pas trop souvent).
-CCM-
Messages postés
927
Date d'inscription
mercredi 28 mai 2008
Statut
Membre
Dernière intervention
16 juin 2013
84
16 juil. 2008 à 17:06
16 juil. 2008 à 17:06
Merci .