Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Décortiquer la source d'une page HTML pour en extraire les infos [ Archives / Au secours ] (Siteauludo)

samedi 18 mars 2006 à 17:33:09 | Décortiquer la source d'une page HTML pour en extraire les infos

Siteauludo

Bonjour,

Voilà, j'utilise Visual Studio C# 2005 Express (Donc Frameworks 2.0), et je suis en train de faire une petite application qui devrai prendre la source d'une page web, et trouver quelques infos dedans.

Exemple concret (c'est ce que je veux faire) : sur [ Lien ], il y a un tableau contenant des valeurs, et je souhaiterai afficher un condensé de ces infos, c'est à dire extraire les infos en rouge dans la source suivante :

---------------------------------------------
(début)...
<TABLE width="100%" cellspacing=0 cellpadding=3 border=0>
<TR bgcolor="#CCCCCC" valign="top">
<TD><FONT face="Arial" size="-1"><B>Name</B></FONT></TD>
<TD align="right"><FONT face="Arial" size="-1"><B>Close</B></FONT></TD>
<TD align="right"><FONT face="Arial" size="-1"><B>Low</B></FONT></TD>
<TD align="right"><FONT face="Arial" size="-1"><B>High</B></FONT></TD>
<TD align="right"><FONT face="Arial" size="-1"><B>Last</B></FONT></TD>
<TD align="right"><FONT face="Arial" size="-1"><B>Chg.&nbsp;%</B></FONT></TD>
</TR>
<TR>
<TD><FONT face="Arial" size="-1"><A href="X2=snWGTQRAwDWvM8KUAIT9FnCubIIkwPyzuTJ$INpItNcYvmkkMJ7gMTQ==">SMI</A></FONT></TD>
<TD align="right"><FONT face="Arial" size="-1">8'017.96</FONT></TD>
<TD align="right"><FONT face="Arial" size="-1">8'035.45</FONT></TD>
<TD align="right"><FONT face="Arial" size="-1">8'090.19</FONT></TD>
<TD align="right"><FONT face="Arial" size="-1">8'047.12</FONT></TD>
<TD align="right"><FONT face="Arial" color="#0000FF" size="-1">+0.36</FONT></TD>
</TR>
<TR bgcolor="#CCCCCC" valign="top">
<TD><FONT face="Arial" size="-1"><A href="X2=snWGTQRAwDWvM8KUAIT9FnFgg2mEoDEMa708W1AxA4vC6NiRuVXLv6w==">DJ Industr Avg Indx</A></FONT></TD>
<TD align="right"><FONT face="Arial" size="-1">11'253.24</FONT></TD>
<TD align="right"><FONT face="Arial" size="-1">11'254.12</FONT></TD>
<TD align="right"><FONT face="Arial" size="-1">11'290.07</FONT></TD>
<TD align="right"><FONT face="Arial" size="-1">11'279.65</FONT></TD>
<TD align="right"><FONT face="Arial" color="#0000FF" size="-1">+0.23</FONT></TD>
</TR>
<TR>
<TD><FONT face="Arial" size="-1"><A href="X2=snWGTQRAwDWvM8KUAIT9FnM4shFilEESdPkvaiJh7ujXz3OfShfqMeg==">FTSE 100</A></FONT></TD>
<TD align="right"><FONT face="Arial" size="-1">5'999.4</FONT></TD>
<TD align="right"><FONT face="Arial" size="-1"></FONT></TD>
<TD align="right"><FONT face="Arial" size="-1"></FONT></TD>
<TD align="right"><FONT face="Arial" size="-1"></FONT></TD>
<TD align="right"></TD>
</TR>
</TABLE>
...(fin)
---------------------------------------------

Voilà, il faudrai que je puisse isoler les chiffres en rouge de ce paquet de texte. Les chiffre en rouge et en bleu changeront chaque jour, mais le reste du code ne changera pas.

Si vous avez une idée, elle sera la bienvenue, car franchement je n'ai pas la moindre idée de la manière de procéder.

Merci beaucoup d'avance,

Siteauludo


dimanche 19 mars 2006 à 11:05:35 | Re : Décortiquer la source d'une page HTML pour en extraire les infos

gyzmo222

Réponse acceptée !
//lire page
            try
            {
                int k=0;
                string[] split = null;
                // Création d'une instance de StreamReader pour permettre la lecture de notre fichier
                StreamReader monStreamReader = new StreamReader(@"C:\cheminfichier\page.html");
                string ligne = monStreamReader.ReadLine();

                // Lecture de toutes les lignes et affichage de chacune sur la page
                while (ligne != null)
                {
                    if (ligne.Length > 60) //demande une ligne plus longue que 60 caractères
                    {
                        ligne = ligne.Substring(46, 13);
                        string result = "";
                        string delimStr = "<>";
                        char[] delimiter = delimStr.ToCharArray();

                        if (ligne.Substring(0, 1) == ">") //vérifie que le premier élement de la ligne (index 46) soit >
                        {
                            split = ligne.Split(delimiter, 3); //coupe sur les delimiter en max 3 parties
                            ligne = split[1]; //récupère la partie numéro 2 (index 1)

                            try
                            {
                                int.Parse(ligne.Substring(0, 1)); //vérifie que ca soit un nombre sinon bang :p
                                result = ligne;
                                k++;

                                if (k == 4) { label1.Text += result; k = 0; }
                            }
                            catch { label2.Text += "bang"; k = 0; }
                        }
                        else
                        {
                            k = 0;
                        }   
                    }
                    ligne = monStreamReader.ReadLine();
                }
                // Fermeture du StreamReader (attention très important)
                monStreamReader.Close();
            }
            catch (Exception ex)
            {
                // Code exécuté en cas d'exception
                label2.Text = "Une erreur est survenue au cours de la lecture !";
                //label2.Text = ex.Message;
            }


Voila, à ne pas changer: la longueur de la ligne avant le nombre à récupérer et les signes <> aisi que l'ordre (4).
En rouge le label des erreurs, en mauve, celui ou je récupère les nombres souhaités

dimanche 19 mars 2006 à 11:44:39 | Re : Décortiquer la source d'une page HTML pour en extraire les infos

Siteauludo

Cher Gizmo, quelle perfection, quelle rapidité, quel style  !!!

Merci beaucoup !
Siteauludo

dimanche 19 mars 2006 à 13:33:31 | Re : Décortiquer la source d'une page HTML pour en extraire les infos

Lutinore

Administrateur CodeS-SourceS
Réponse acceptée !
Gyzmo, quand tu utilises un try/catch si un objet nécessite l'appel d'une fonction Close ou Dispose utilises un try/catch/finally, ou une close using.



SreamReader sr = null;

try
{
   // ..
}
catch
{
   // ..
}
finally
{
   if ( sr != null )
   {
      sr.close( );
      sr = null;
   }
}




dimanche 19 mars 2006 à 17:19:41 | Re : Décortiquer la source d'une page HTML pour en extraire les infos

gyzmo222

 Jamais prétendu que mon code était optimisé, il est meme brouillon mais il fonctionne... C'est un coup de main, je n'ai pas la pretention de faire le boulo des autres à leur place. Effectivement, un finally l'optimiserait d'avantage et comme ressources non managés, il serait mieux de mettre un close pour libérer l'espace mémoire




Cette discussion est classé dans : page, source, infos, rouge, extraire


Répondre à ce message

Sujets en rapport avec ce message

récupérer des sous-chaines dans un code html [ par zarzar ] bonsoirvoici le problème auquel je suis confrontéj'aimerais etre capable d'aller chercher dans un code source html (peut importe en fait que ça soit d Afficher la source d'une page Web [ par Pierrrot ] Bonjour,J'ai besoin d'examiner la source d'une page Web.En faite j'ai un WebBrowser et je souhaite Afficher la source de la page qui est en train d'êt Récupération d'une sortie html [ par yoannd ] Salut,Je travaille sur un projet WebForm. J'ai une page avec un bouton, et mon but est de récupérer tout le code source html de ma page web en cours, problême d impression avec saut de page [ par web35 ] Bonjour J'ai créé un état avec un saut de page pour imprimer le résultat d'un formulaire, mais quand je veux imprimer une 1 er page vierge, l'en-t Source HTML [ par nadjim ] BonjourJ'ai un leger soucisJe voudrai récuperer le code source d'une page HTML. J'utilise la propriété Browser.Document.body.innerHTML pour le récupér Axwebbrowser : Obtenir le code source de la page naviguée? [ par fdev9 ] Bonjour, J'aimerai obtenir le code source d'une page web. Je sais le faire en utilisant un WebClient mais j'ai besoin d'utilsier ici un composant Ax extraire les liens d'une page web [ par sisadel ] bonjour a tous ,voila en fait je voudrai savoir comment pourrai-je parser une page de resultat d'un moteur de recherche pour reccuperer les liens qui Poster un message [ par Bidou ] Hey,Je ne crois pas que ce bug (mineur) ait déjà été signalé :Sur le forum maintenant, on a un nombre de réponses max. par page, quand une page est à Erreur dans le compte des messages [ par dgouttegattat ] Bonsoir à tous,Je signale le (petit) problème suivant : le nombre total de messages postés par un membre, tel qu'il est affiché dans le forum dans l'e Word : rendre une page vierge ! [ par titlap ] Probleme tout bete, avec les VSTO, auquel je ne trouve pas de réponse : Comment obtenir une page vierge, ou alors effacer tous les éléments qui se tro


Nos sponsors

Sondage...

CalendriCode

Novembre 2008
LMMJVSD
     12
3456789
10111213141516
17181920212223
24252627282930

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 1,170 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.