récuperer les infos d'un fichier html

MacDonGio

Membre confirmé
6 Avril 2004
36
0
Bonjour à tous...

J'ai mon emploi du temps qui est régulièrement mis à jour sur internet, sur le site de mon école et j'aimerais créer un petit programme qui me permettrait de transformer la page html, une fois enregistrée en .txt, pour en récuperer les informations qui m'interessent et les mettre dans un nouveau fichier texte reconnu par iCal, pour ne pas avoir à tout le temps retaper mon emploi du temsp.

Donc je cherche les commandes, shell, ou autre, qui me permettrait par exemple de supprimer certaines balises, les remplacer par celles de iCal (celles qu'on a lorsqu'on ouvre un fichier .ics (edt de iCal) ), récuperer des mots pour les réorganiser, etc...

Merci beaucoup aux personnes qui pourront m'aider.
 
Parser un fichier html est loin d'être évident. Maintenant si le fichier de départ est simple et invariant dans sa structure tu devrais pouvoir y arriver.
Regardes par exemple du coté de sed (man sed dans un terminalt) pour tout ce qui transformations de balise. Par exemple :

<font class="small">Code:</font><hr /><pre>
s/rouge/vert/g
</pre><hr />

va transformer toutes les occurences du mot rouge par le mot vert dans ton document.
 
Si tu cherches un outil pour traiter du texte le plus efficace me semble gawk. dans le principe tu décris dans un fichier le traitement que tu veux effectué pour chaque ligne du fichier source.
la fonction gsub permet de remplacer une chaine par une autre plus simplement qu'avec sed ( surtout si tu as des caracteres dit protégés comme - / : - le remplacement s'avere sportif avec sed
sleep.gif
)
gawk manipule des variables comme tout langage de programmation, mais avec les spécificités au traitement des chaines de caracteres.

Tu peux même trouver qques exemples à partir de Google
Si tu as un cas précis, je peux te proposer un début de résolution en exemple.

Sinon tu as aussi la solution d'utiliser un browser que te supprime tous les balises html comme lynx
$ lynx -dump http://unsite/index.html
 
ok, je vais aller faire un tour sur ce site, merci

je vais te donner un exemple, le fichier que je récupère dans la page html est de cette forme:
&amp;nbsp; &lt;/TD&gt;
&lt;TD WIDTH="05%" BGCOLOR="#AABBEE"&gt;08h00 &amp;nbsp; &lt;/TD&gt;
&lt;TD WIDTH="18%" BGCOLOR="#33CCFF"&gt;Electricit&amp;eacute; &amp;nbsp; &lt;/TD&gt;
&lt;TD WIDTH="10%" BGCOLOR="#33CCAA"&gt;COURS &amp;nbsp; &lt;/TD&gt;
&lt;TD WIDTH="05%" BGCOLOR="#33CCCC"&gt;01h30 &amp;nbsp;&lt;/TD&gt;
&lt;TD WIDTH="10%" BGCOLOR="#33CCDD"&gt;30 &amp;nbsp; &lt;/TD&gt;
&lt;TD WIDTH="15%" BGCOLOR="#33CCEE"&gt; &amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;&lt;TR VALIGN=TOP&gt;&lt;TD WIDTH="20%" BGCOLOR="#33AAAA"&gt;21-04-04 &amp;nbsp; &amp;nbsp; &lt;/TD&gt;

et je voudrais le transformer en fichier du type :
BEGIN:VEVENT
DTSTART;TZID=Europe/Paris:20040422T133000
DTEND;TZID=Europe/Paris:20040422T163000
SUMMARY:Math?©matiques g?©n?©rales\, cours
UID:56A2F9A4-93AB-11D8-9CB2-000A95B14486
SEQUENCE:1
DTSTAMP:20040211T175817Z
END:VEVENT

un petit coup de pouce de plus serait le bienvenu...
merci d'avance
 
<blockquote><font class="small"> MacDonGio:</font><hr />(...) et je voudrais le transformer en fichier du type : (...)

[/QUOTE]
Ben tu sais, c'est assez délicat ton affaire.
crazy.gif

Ton fichier html n'a évidemment aucune structure, ce serait du XML encore...
Le contenu d'un tel document n'a de sens qu'une fois visualisé par un navigateur... Un programme aura du mal à y trouver quoi que ce soit...
C'est pas pour te décourager, mais là...
out.gif

Faut vraiment être motivé...
wink.gif


Bon sinon, de quelles technologies disposes-tu pour faire ça?
sleep.gif
 
ok, je vais aller faire un tour sur ce site, merci

Je crois que je me suis mal exprimé
http://unsite/index.html voulait decrire la page html de ton emploi du temps

donc
récuperes une page d'emploi du temps (tu peux faire enregistrer sous avec ton navigateur si tu n'a pas lynx)
{Lynx est un navigateur en mode texte que tu lances dans un terminal}

Si tu as lynx l'option -dump retirera toutes les balises HTML et te donneras un document qui pourra lui être transformé par une procedure awk suivant les quelques regles que tu fournis dans ton message, A CONDITION bien sur que le texte de la page soit significatif pour l'usage que tu veux en faire

Donc en résumé
-Récuperes une page d'emploi du temps à transferer, postes la moi, j'ai "lynx"
-si tu trouves lynx sur ta machine, récuperes cette même page en mode texte, lynx -dump http://.....tapagedemploidutemps
ou
lynx -dump http://.....tapagedemploidutemps &gt;fichieraetudier
pour avoir une copie en fichier texte
- analyse les informations et dis moi comment elles doivent être transformées
un exemple imaginé completement loufoque de ta page emploi du temps
---------------------------------------------------------
21-04-2004 designation professeur classe
15h30 30mn cours de mathématique Mr Gourou Maternelle salle A
...
...

c'est jouable à premiere vue
 
tout doucement mais surement, j'ai commencé à transformer le fichier de départ avec des commandes perl

j'ai commancé par écrire dans un fichier .pl les commandes suivantes:

#!/usr/bin/perl
open(FIC,"&lt;1");

$l = &lt;FIC&gt;;


while( defined( $l = &lt;FIC&gt; ) )
{


$l =~ s/&lt;TD........................33CCFF.&gt;/SUMMARY:/g;
$l =~ s/&lt;TD........................33CCEE.&gt;/END:VEVENT/g;
$l =~ s/&lt;TD........................33AAAA.&gt;/DTSTART;TZID=EUROPE_PARIS:/g;
$l =~ s/&lt;TD........................33CCBB.&gt;//;
$l =~ s/&lt;TD........................33CCCC.&gt;//;
$l =~ s/&lt;TD........................33CCDD.&gt;//;
$l =~ s/&lt;TD........................AACCBB.&gt;//;
$l =~ s/&lt;TD........................33CCAA.&gt;//;
$l =~ s/&lt;TD........................AABBEE.&gt;//;
$l =~ s/&lt;TR VALIGN=TOP&gt;/BEGIN:VEVENT\n/g;
$l =~ s/&lt;.TD&gt;//;
$l =~ s/&lt;.html&gt;//;
$l =~ s/&lt;.TR&gt;//;
$l =~ s/&lt;.TABLE&gt;//;
$l =~ s/&lt;.BODY&gt;//;
$l =~ s/.nbsp.//;
$l =~ s/&amp;nbsp;//;
$l =~ s/ &amp;nbsp;//;
$l =~ s/&amp;//;
$l =~ s/nbsp;//;
$l =~ s/&lt;TR&gt;//;
$l =~ s/&lt;.*ME1.*//;
$l =~ s/&lt;.*Consultation.*//;
$l =~ s/Date.*//;
$l =~ s/Mati.re.*//;
$l =~ s/Groupe.*//;
$l =~ s/Type_s.ance.*//;
$l =~ s/Dur.e.*//;
$l =~ s/Salle.*//;
$l =~ s/Observations//;
$l =~ s/Professeur//;
$l =~ s/Heure//;
$l =~ s/&lt;br&gt;//;
$l =~ s/&lt;TABLE.*//;
$l =~ s/&lt;body.*//;
$l =~ s/.*head&gt;//;
$l =~ s/eacute;/e/;
$l =~ s/&amp;eacute;/e/g;

# a partir d'ici il n'y a plus de cochonnerie dans le fichier
smile.gif


print $l;
}

ce qui me remplace :
&lt;/TR&gt;&lt;TR VALIGN=TOP&gt;&lt;TD WIDTH="20%" BGCOLOR="#33AAAA"&gt;07-04-04 &amp;nbsp; &amp;nbsp; &lt;/TD&gt;
&lt;TD WIDTH="05%" BGCOLOR="#AABBEE"&gt;13h30 &amp;nbsp; &lt;/TD&gt;
&lt;TD WIDTH="18%" BGCOLOR="#33CCFF"&gt;Hydraulique &amp;nbsp; &lt;/TD&gt;
&lt;TD WIDTH="07%" BGCOLOR="#AACCBB"&gt;01/02 &amp;nbsp; &lt;/TD&gt;
&lt;TD WIDTH="10%" BGCOLOR="#33CCAA"&gt;TRAVAUX-PRATIQUES &amp;nbsp; &lt;/TD&gt;
&lt;TD WIDTH="10%" BGCOLOR="#33CCBB"&gt;GRATON &amp;nbsp; &lt;/TD&gt;
&lt;TD WIDTH="05%" BGCOLOR="#33CCCC"&gt;04h00 &amp;nbsp;&lt;/TD&gt;
&lt;TD WIDTH="10%" BGCOLOR="#33CCDD"&gt;HYDRAULIQUE &amp;nbsp; &lt;/TD&gt;
&lt;TD WIDTH="15%" BGCOLOR="#33CCEE"&gt; &amp;nbsp;&lt;/TD&gt;

en :
BEGIN:VEVENT
DTSTART;TZID=EUROPE_PARIS:07-04-04
13h30
SUMMARY:Hydraulique
01/02
TRAVAUX-PRATIQUES
GRATON
04h00
HYDRAULIQUE
END:VEVENT

maintenant il faudrai que je trouve le moyen de récupérer certaines informations comme l'heure et la date pour tout mettre sous la forme yyyymmddThhmmss , puis récuperer la durée pour le rajouter

merci de votre aide

PS: si quelqu'un pouvait me dire à quoi correspond la ligne
UID:56A2FF84-93AB-11D8-9CB2-000A95B14486
du fichier .ics d'iCal, ça m'aiderait aussi pas mal
 
Bonjour, j'suis un nouveau venu dans ce forum. J'avoue ne pas avoir tout lu mais pour la partie recuperer la page html dans un fichier le testurl.c de mon projet (verificateur de lien web) fera l'affaire ;-)
 
LaGaFFe a dit:
Bonjour, j'suis un nouveau venu dans ce forum. J'avoue ne pas avoir tout lu mais pour la partie recuperer la page html dans un fichier le testurl.c de mon projet (verificateur de lien web) fera l'affaire ;-)

alors tu vas ptete pouvoir m'aider

donc si tu pouvais m'en dire d'avantage...

merci d'avance
 
Donc des précisions sur mon projet:
J'ai un code TestURL.C fourni par mon prof qui teste si l'url est bonne (pas de pb serveur, erreur 404, etc) puis te permet de récuperer le document html.

Ce dont tu aura besoin:
les fichiers TestURL.C, TestURL.h et testurl.c

Comment ça marche:
Le fichier TestURL.C contient le code des fonctions. Le TestURL.h les prototypes pour savoir qu'est-ce que tu peut utiliser et comment. testurl.c est un programme d'example fourni par le prof pour illustrer comment appeller les fonctions.
Donc en résumé, dans ton cas il te faut faire un GetHTTP(ton serveur, ton chemin); GetHTTP retournera un code d'erreur, si ce code = 200 tout s'est bien passé et tu peut ensuite utiliser la page html avec GetDoc() qui te retourne une chaine contenant la page. Reste plus qu'à la traiter... à la fin mettre un FreeURL() pour rendre la mémoire de tes fonctions web.

Voila voili