Stocker dans une BDD les infos d'un flux RSS
boss183
Messages postés
181
Date d'inscription
Statut
Membre
Dernière intervention
-
creadiff Messages postés 445 Date d'inscription Statut Membre Dernière intervention -
creadiff Messages postés 445 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
Je souhaiterais récupérer des infos provenant de flux RSS et les stocker directement dans une base de données. Je n'ai pas réellement d'idée pour faire ça, je pense que la difficulté va être d'extraire juste les infos que l'on veut et qu'elles constituent les différents attributs de la table.
Merci d'avance
Je souhaiterais récupérer des infos provenant de flux RSS et les stocker directement dans une base de données. Je n'ai pas réellement d'idée pour faire ça, je pense que la difficulté va être d'extraire juste les infos que l'on veut et qu'elles constituent les différents attributs de la table.
Merci d'avance
A voir également:
- Stocker dans une BDD les infos d'un flux RSS
- Tiny tiny rss - Télécharger - Flux RSS
- Où sont stockés les mots de passe sur android - Guide
- Capture flux - Télécharger - TV & Vidéo
- Où sont stockés les messages whatsapp supprimés - Guide
- Flux earthsounds : les sons de la terre - Guide
9 réponses
Trois étapes importantes :
1 - Récupérer le contenu texte du flux RSS (en PHP, tu pourras utiliser file_get_contents($url_du_flux_rss)
2 - Parser le flux RSS, qui est à la base au format XML (en PHP, la classe DOMDocument pourra t'être d'une grande aide)
3 - Rechercher les informations d'intérêt dans ce flux, et les placer dans une base de données (en PHP, à grands coups de foreach(){} et de mysql_query())
1 - Récupérer le contenu texte du flux RSS (en PHP, tu pourras utiliser file_get_contents($url_du_flux_rss)
2 - Parser le flux RSS, qui est à la base au format XML (en PHP, la classe DOMDocument pourra t'être d'une grande aide)
3 - Rechercher les informations d'intérêt dans ce flux, et les placer dans une base de données (en PHP, à grands coups de foreach(){} et de mysql_query())
Bonjour,
Alors j'ai réussi à stocker dans une base de donnée mais malheureusement pour moi les informations venant du flux RSS sont une chaine de caractère.
Exemple : CERTA-2011-AVI-223 : Multiples vulnérabilités dans BlackBerry Enterprise Server (14 avril 2011)
Pour l'instant je n'isole que 3 paramètres : title, link et desciption mais je souhaiterais isoler le nom du logiciel et je ne sais pas trop comment surtout que je souhaiterais exploiter d'autres flux RSS qui n'auront pas le même modèle.
En tout cas, je vous remercie pour votre aide.
Alors j'ai réussi à stocker dans une base de donnée mais malheureusement pour moi les informations venant du flux RSS sont une chaine de caractère.
Exemple : CERTA-2011-AVI-223 : Multiples vulnérabilités dans BlackBerry Enterprise Server (14 avril 2011)
Pour l'instant je n'isole que 3 paramètres : title, link et desciption mais je souhaiterais isoler le nom du logiciel et je ne sais pas trop comment surtout que je souhaiterais exploiter d'autres flux RSS qui n'auront pas le même modèle.
En tout cas, je vous remercie pour votre aide.
Le flux RSS n'est pas une chaîne de caractères ; c'est un format standardisé, qui s'organise sous cette forme :
Ces balises sont loin d'être les seules, d'autres peuvent venir les compléter (voir ici).
Seules les plus utilisées ont été présentées ci-dessus.
Certains navigateurs n'afficheront que le texte, dans ce cas il faudra afficher la source pour visualiser le XML. Sinon, donne un lien vers le flux que tu utilises, je verrai si je peux t'orienter à partir de là.
<rss> <channel> <title>Titre du flux</title> <link>Lien vers le site source</link> <description>Description du contenu du flux</description> <title> <item> <title>Titre du premier article</title> <link>Lien vers l'article source</link> <description>Contenu du premier article</description> </item> <item> <title>Titre du deuxième article</title> <link>Lien vers l'article source</link> <description>Contenu du deuxième article</description> </item> </channel> </rss>
Ces balises sont loin d'être les seules, d'autres peuvent venir les compléter (voir ici).
Seules les plus utilisées ont été présentées ci-dessus.
Certains navigateurs n'afficheront que le texte, dans ce cas il faudra afficher la source pour visualiser le XML. Sinon, donne un lien vers le flux que tu utilises, je verrai si je peux t'orienter à partir de là.
Merci pour ta réponse, je te donne quelques liens dont je veux extraire les données :
http://www.certa.ssi.gouv.fr/site/certa.rss
http://www.auscert.org.au/rss.html
https://sc1.checkpoint.com/sc1/web/smartdefense_atomz.xml
donc voilà je sais pas si tu vas pouvoir m'aider, pour l'instant mon code ressemble à ça :
merci d'avance
http://www.certa.ssi.gouv.fr/site/certa.rss
http://www.auscert.org.au/rss.html
https://sc1.checkpoint.com/sc1/web/smartdefense_atomz.xml
donc voilà je sais pas si tu vas pouvoir m'aider, pour l'instant mon code ressemble à ça :
require_once 'rss_fetch.inc'; $urlcerta = 'http://www.certa.ssi.gouv.fr/site/certa.rss'; $rss = fetch_rss($urlcerta); foreach ($rss->items as $item ) { $sql= "INSERT INTO fluxrss VALUES ('$item[title]','$item[link]','$item[description]')"; mysql_query ($sql); }
merci d'avance
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ton INSERT laisse penser qu'il n'y a pas de clé primaire dans ta table... Très important !
Et il faut faire attention aux doublons aussi...
Bref.
Sinon, il est préférable d'écrire
Ce code est plus facile à maintenir ; en effet, le jour où tu rajoutes une colonne (comme une clé primaire (j'insiste, c'est très important), la date d'insertion, le numéro d'identification du message...), il n'y aura pas besoin de changer toutes tes requêtes...
Et il faut faire attention aux doublons aussi...
Bref.
Sinon, il est préférable d'écrire
$sql= "INSERT INTO fluxrss (title, link, desc) VALUES ('$item[title]','$item[link]','$item[description]')";
Ce code est plus facile à maintenir ; en effet, le jour où tu rajoutes une colonne (comme une clé primaire (j'insiste, c'est très important), la date d'insertion, le numéro d'identification du message...), il n'y aura pas besoin de changer toutes tes requêtes...
ok merci, je fais les changements sur mes requêtes.
Tu as une idée pour extraire que le nom du logiciel pour ces flux RSS ?
Tu as une idée pour extraire que le nom du logiciel pour ces flux RSS ?
N'oublions pas non plus d'échapper certains caractères !
Sinon, les bugs seront fréquents (voire systématiques (voire graves)).
Sinon, les bugs seront fréquents (voire systématiques (voire graves)).
foreach ($rss->items as $item ) { $title = mysql_real_escape_string($item["title"]); $link = mysql_real_escape_string($item["link"]); $description = mysql_real_escape_string($item["description"]); $sql = "INSERT INTO (title, link, description) "; $sql.= "VALUES ('$title','$link','$description')"; mysql_query($sql); }
encore merci !
Par contre, je ne sais toujours pas extraire les données qui m'intéressent dans ce flux. Tu as pu regarder les exemple que je t'ai mis ?
Par contre, je ne sais toujours pas extraire les données qui m'intéressent dans ce flux. Tu as pu regarder les exemple que je t'ai mis ?
Oui, c'est bien du beau RSS tout valide !
Par contre je ne connais pas la librairie que tu utilises (rss_fetch.inc), personnellement je parse directement le XML avec DOMDocument (que j'évoquais au premier post).
Par contre je ne connais pas la librairie que tu utilises (rss_fetch.inc), personnellement je parse directement le XML avec DOMDocument (que j'évoquais au premier post).