Comment récupérer le texte d'un fichier html
lolonaute97
Messages postés
27
Date d'inscription
Statut
Membre
Dernière intervention
-
ktm620enduro Messages postés 293 Date d'inscription Statut Membre Dernière intervention -
ktm620enduro Messages postés 293 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je veux récupérer une zone de texte de cette page: http://www.meteo.fr/temps/domtom/La_Reunion/EMD/orages/orages.html
JE veux récupérer ce texte:
Bulletin du 12/04/2011
'IL N'Y A PAS OU PLUS DE BULLETIN DE VIGILANCE ORAGES EN COURS'
Ce texte étant mis à jour tout le temps je ne peux pas m'amuser à faire copier coller.
Est ce possible avec iframe?
merci pour votre aide
Je veux récupérer une zone de texte de cette page: http://www.meteo.fr/temps/domtom/La_Reunion/EMD/orages/orages.html
JE veux récupérer ce texte:
Bulletin du 12/04/2011
'IL N'Y A PAS OU PLUS DE BULLETIN DE VIGILANCE ORAGES EN COURS'
Ce texte étant mis à jour tout le temps je ne peux pas m'amuser à faire copier coller.
Est ce possible avec iframe?
merci pour votre aide
A voir également:
- Comment récupérer le texte d'un fichier html
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier bin - Guide
- Comment recuperer un message supprimé sur whatsapp - Guide
- Fichier rar - Guide
6 réponses
en php ce type de programme se résume en deux lignes
Abandonne ce qui te trouble au profit de ce qui apaise ton coeur.
if (preg_match('#ffoooo">([^<]+)#i',file_get_contents('http://www.meteo.fr/temps/domtom/La_Reunion/EMD/orages/orages.html'),$r)) echo $r[1];
Abandonne ce qui te trouble au profit de ce qui apaise ton coeur.
merci heyquem d'apporter des coups de mains pour résoudre ce sujet. Il me faudrai les 2 versions, avec et sans alerte afin de pouvoir déterminer la regex qui peut matcher les deux. Si tu peux me pondre les 2 versions en .html en faisant "enrgistrer sous" ca serai bien lolonaute97. A bientot, quand tu m'auras pondu ça je te sortirai le code qui fonctionne a touts les coups ;)
Je viens d'enrgistrer le code source de la page actuelle avec bulletin complet.
Le fichier fait 94639 octets.
S'il faut vous l'envoyer , dites moi comment, c'est un peu lourd pour le mettre sur CCM
Je ne fais pas 'Enregistrer sous' pour faire ce genre d'enregistrement , car je ne comprends pas bien ce qui se passe en coulisse.
J'utilise un programme de 6 lignes pour capter le code source et l'enregistrer en mode binaire qui conserve intégralement tous les caractères.
Je ne comprends pas bien : quelle est la difficulté pour enregistrer le code source d'une page web ?
PS: je n'avais pas enregistré la page en l'absence de bulletin. Mais en reprenant mon code, il va être facile de progresser
Le fichier fait 94639 octets.
S'il faut vous l'envoyer , dites moi comment, c'est un peu lourd pour le mettre sur CCM
Je ne fais pas 'Enregistrer sous' pour faire ce genre d'enregistrement , car je ne comprends pas bien ce qui se passe en coulisse.
J'utilise un programme de 6 lignes pour capter le code source et l'enregistrer en mode binaire qui conserve intégralement tous les caractères.
Je ne comprends pas bien : quelle est la difficulté pour enregistrer le code source d'une page web ?
PS: je n'avais pas enregistré la page en l'absence de bulletin. Mais en reprenant mon code, il va être facile de progresser
Mais bon, ce n'est pas la peine d'attendre demain pour pouvoir écrire le code suivant:
import re import urllib url = 'http://www.meteo.fr/temps/domtom/La_Reunion/EMD/orages/orages.html' sock = urllib.urlopen(url) ch = sock.read() sock.close() RE1 = (' BULLETIN DE VIGILANCE ORAGES\n' " </div>\n <div id='references_preview'>\n" ' Bulletin du \d\d/\d\d/20\d\d\n' " <br>\n </div>\n <div id='texte_bulletin'>\n <b>\n" ' <font color="#FFOOOO">\n' " (.+?)\n" ' </font>\n </b>\n </div>\n </body>\n </html>') RE2 = (' BULLETIN DE VIGILANCE ORAGES\n' " </div>\n <div id='references_preview'>\n" ' (Bulletin nº \d+ du \d\d/\d\d/20\d\d à \d\d h \d\d locales,)<br>\n' ' (valable du \d\d/\d\d/20\d\d\ à \d\d\ heures' ' au \d\d\/\d\d\/20\d\d à \d\d\ heures locales.)\n' ' </div>\n' " <div id='texte_bulletin'>\n" '(.+?)' '<strong>ZONAGE DES RISQUES:</strong>(.+?)</div>\n' "<div id='carte_et_climato'>" '.+?' 'h2>ZONAGE DU RISQUE</h2>' '(.+?)' "\n </div>\n <div id='preview_conseils'>\n") mat = re.search(RE1,ch) if mat: print mat.group(1) else: li = re.search(RE2,ch,re.DOTALL).groups() print 'li[0] :\n',li[0] print print 'li[1] :\n',li[1] print print re.sub('</?p>','',li[2]).strip() print print 'li[3] :\n',li[3] print print re.findall('Risque d.+?(?=</p>)',li[3]) print print 'li[4] :\n',li[4] print print re.findall('<br><b>(Zone.+?)(?=<br><b>|\Z)',li[4])
Bonjour,
Quel langage de programmation utilises-tu ?
Il faut capter le code source de la page en question et la parser avec un parseur ou l'analyser avec une regex, et tu extrais ainsi la portion que tu désires
En Python, ça se fait en moins de deux
Quel langage de programmation utilises-tu ?
Il faut capter le code source de la page en question et la parser avec un parseur ou l'analyser avec une regex, et tu extrais ainsi la portion que tu désires
En Python, ça se fait en moins de deux
D'ailleurs, voilà, c'est fait:
J'ai écrit la RE à partir de ce qu'il y a dans la page en question en ce moment.
Il faudrait connaitre le contenu de la page en cas de bulletin pour adapter la regex à la capture des bulletins tels qu'ils sont présentés.
Si tu as un enregistrement du code source effectué lorsqu'il y avait un bulletin, fais le moi parvenir à heyquem@gmail.com et je modifierai en cnséquence.
Par la suite il sera possibvle d'ajouter une fréquence de consultation si ça t'intéresse, et même l'envoi d'une alerte sur des destinations particulières, mais cette dernière chose je ne sais pas faire pour le moment.
Salut
import re import urllib url = 'http://www.meteo.fr/temps/domtom/La_Reunion/EMD/orages/orages.html' sock = urllib.urlopen(url) ch = sock.read() sock.close() print '\n'.join(repr(line) for line in ch.splitlines(1)) RE = (' BULLETIN DE VIGILANCE ORAGES\n' " </div>\n <div id='references_preview'>\n" ' Bulletin du \d\d/\d\d/20\d\d\n' " <br>\n </div>\n <div id='texte_bulletin'>\n <b>\n" ' <font color="#FFOOOO">\n' " (.+?)\n" ' </font>\n </b>\n </div>\n </body>\n </html>') print print '\n===============================\n' print re.search(RE,ch).group(1)
J'ai écrit la RE à partir de ce qu'il y a dans la page en question en ce moment.
Il faudrait connaitre le contenu de la page en cas de bulletin pour adapter la regex à la capture des bulletins tels qu'ils sont présentés.
Si tu as un enregistrement du code source effectué lorsqu'il y avait un bulletin, fais le moi parvenir à heyquem@gmail.com et je modifierai en cnséquence.
Par la suite il sera possibvle d'ajouter une fréquence de consultation si ça t'intéresse, et même l'envoi d'une alerte sur des destinations particulières, mais cette dernière chose je ne sais pas faire pour le moment.
Salut
Quelle réponse ?
Si tu veux utiliser mon code, tu dois installer Python. Ca prend 10 minutes max.
Si tu veux continuer avec PHP, il faut écrire un programme similaire dans ce langage. PHP permet d'utiliser les regex aussi. Quant à capter un code source sur le web, il doit bien pouvoir le faire.
Certains te conseilleront aussi un parseur. A toi de voir.
En t'adressant à un forum PHP, tu trouveras de l'aide. Si tu restes en PHP, je ne peux pas t'aider plus.
Si tu veux utiliser mon code, tu dois installer Python. Ca prend 10 minutes max.
Si tu veux continuer avec PHP, il faut écrire un programme similaire dans ce langage. PHP permet d'utiliser les regex aussi. Quant à capter un code source sur le web, il doit bien pouvoir le faire.
Certains te conseilleront aussi un parseur. A toi de voir.
En t'adressant à un forum PHP, tu trouveras de l'aide. Si tu restes en PHP, je ne peux pas t'aider plus.
essaye ceci
Abandonne ce qui te trouble au profit de ce qui apaise ton coeur.
if (preg_match('#(<div id='titre_avis'>.*?)<div id='preview_conseils'>#i',file_get_contents('http://www.meteo.fr/temps/domtom/La_Reunion/EMD/orages/orages.html'),$r)) echo $r[1];
Abandonne ce qui te trouble au profit de ce qui apaise ton coeur.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
J'ai fait ce que j'avais dit qu'il faudrait faire dès qu'on aurait le contenu d'un vrai bulletin: adapter la regex pour capturer un bulletin réel.
Le résultat de ce programme est
Dans les résultats , il faudrait changer toutes les séquences HTML du genre
par des caractères accentués.
Mais j'en reste là car je ne sais pas ce que tu veux faire exactement, et que de toutes façons tu utilises PHP. Alors je laisse la main à ktm620enduro.
A titre indicatif, j'ai passé environ 1h pour arriver au code ci-dessus
PS:
l'image a pour adresse:
http://www.meteo.fr/temps/domtom/La_Reunion/EMD/orages/CarteAlerteOrage.png
J'ai fait ce que j'avais dit qu'il faudrait faire dès qu'on aurait le contenu d'un vrai bulletin: adapter la regex pour capturer un bulletin réel.
import re import urllib url = 'http://www.meteo.fr/temps/domtom/La_Reunion/EMD/orages/orages.html' sock = urllib.urlopen(url) ch = sock.read() sock.close() print '\n'.join(repr(line) for line in ch.splitlines(1)) print '\n\n===============================\n\n\n' RE = (' BULLETIN DE VIGILANCE ORAGES\n' " </div>\n <div id='references_preview'>\n" ' (Bulletin nº \d+ du \d\d/\d\d/20\d\d à \d\d h \d\d locales,)<br>\n' ' (valable du \d\d/\d\d/20\d\d\ à \d\d\ heures' ' au \d\d\/\d\d\/20\d\d à \d\d\ heures locales\.)\n' ' </div>\n' " <div id='texte_bulletin'>\n" '(.+?)' '<strong>ZONAGE DES RISQUES:</strong>(.+?)</div>\n' "<div id='carte_et_climato'>" '.+?' 'h2>ZONAGE DU RISQUE</h2>' '(.+?)' "\n </div>\n <div id='preview_conseils'>\n") li = re.search(RE,ch,re.DOTALL).groups() print 'li[0] :\n',li[0] print print 'li[1] :\n',li[1] print print re.sub('</?p>','',li[2]).strip() print print 'li[3] :\n',li[3] print print re.findall('Risque d.+?(?=</p>)',li[3]) print print 'li[4] :\n',li[4] print print re.findall('<br><b>(Zone.+?)(?=<br><b>|\Z)',li[4])
Le résultat de ce programme est
li[0] : Bulletin nº 3 du 15/04/2011 à 05 h 00 locales, li[1] : valable du 15/04/2011 à 05 heures au 15/04/2011 à 17 heures locales. Sur La Réunion, le flux est orienté au Nord-Est, associé à une masse d'air humide et instable. Au cours de la nuit, des nuages se sont développés entre l'île Maurice et notre département. Ils ont abordé les côtes Nord-Est en milieu de nuit. Vers 1 heure, le tonnerre a été entendu. Ces orages peuvent intéresser l'île jusqu'en fin de journée de ce vendredi 15 avril 2011 et occasionner des précipitations, localement fortes. li[3] : <br /><br />Risque d'orages: Zones 1, 2, 3, 4 et 5 </p><p>Risque de fortes pluies: Zones 1, 2 </p> ['Risque d'orages: Zones 1, 2, 3, 4 et 5 ', 'Risque de fortes pluies: Zones 1, 2 '] li[4] : <br><b>Zone 1:</b> Risque d’orages (probabilité 20 à 50%).<br><b>Zone 2:</b> Risque d’orages (probabilité 20 à 50%).<br><b>Zone 3:</b> Risque d’orages (probabilité 20 à 50%).<br><b>Zone 4:</b> Risque d’orages (probabilité 20 à 50%).<br><b>Zone 5:</b> Risque d’orages (probabilité 20 à 50%). ['Zone 1:</b> Risque d’orages (probabilité 20 à 50%).', 'Zone 2:</b> Risque d’orages (probabilité 20 à 50%).', 'Zone 3:</b> Risque d’orages (probabilité 20 à 50%).', 'Zone 4:</b> Risque d’orages (probabilité 20 à 50%).', 'Zone 5:</b> Risque d’orages (probabilité 20 à 50%).']
Dans les résultats , il faudrait changer toutes les séquences HTML du genre
à î é etc....
par des caractères accentués.
Mais j'en reste là car je ne sais pas ce que tu veux faire exactement, et que de toutes façons tu utilises PHP. Alors je laisse la main à ktm620enduro.
A titre indicatif, j'ai passé environ 1h pour arriver au code ci-dessus
PS:
l'image a pour adresse:
http://www.meteo.fr/temps/domtom/La_Reunion/EMD/orages/CarteAlerteOrage.png
salut je suis prêt pour te faire ton code, tu as les deux versions du fichier ?
La RE est aussi longue car elle est prévue pour pouvoir être modifiée afin d'attraper la date en rajoutant simplement deux parenthèses autour de \d\d/\d\d/20\d\d
Le code suivant comporte ainsi findall() au lieu de search() dans la même optique.
ktm620enduro, si je comprends bien, les regex et la fonction file_get_contents() sont disponibles de base dans PHP sans importation particulière ?
Je m'explique quand il n'y a pas de vigilance je veux afficher une image verte (vert.jpg)
Par contre dès qu'il y a une alerte l'image passe au rouge (rouge.jpg)
Merci a vous!