IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Récupérer information d'un site web


Sujet :

C#

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 99
    Par défaut Récupérer information d'un site web
    Bonjour,
    Je suis débutant en C# et je souhaiterais savoir comment faire pour récupérer des informations d'un site web. En quelque sorte depuis la source d'une page récupérer des informations.
    Par exemple dans une page source j'aurais:
    toto="123242" blabla="AZERTY" ...
    Et je souhaiterais récupérer l'information 123242 et la renvoyer dans une url par exemple http://www.google.fr/search?q=123242
    et récupéré le résultat de cette page.

    Je ne vois donc pas du tout comment m'y prendre.

    Merci à ceux qui pourront m'aider.

    Ju

  2. #2
    Membre émérite Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    Février 2007
    Messages
    823
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets technique C# / MVC / .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 823
    Par défaut
    Ce que tu cherches à faire ressemble un peu aux bots qui "sniffent" les adresses mails dans les site, non ?

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 53
    Par défaut
    Bonjour

    Je serais intéressé moi aussi a savoir comment l'on fait. Je ne recherche pas a sniffer les adresses emails, ca serait plus tot pour la meteo sur le site de meteo media.

    Je n'ai pas le code avec moi, mais j'ai déjà réussi a avoir le code d'une page web, est-ce que c'est a partir de cette infos que je peux aller chercher les critères qui m'intéresse ?

    Merci

    Grégory

    PS: je sais que la question a été posé en 2008, mais je ne voulais pas ouvrir une nouvelle discution.

  4. #4
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2008
    Messages : 381
    Par défaut
    J'ai déjà fait 2-3 programmes qui parcouraient le code source d'une page web, et j'ai toujours utilisé les expressions régulières.

    Un peu complexe au début, mais lorsqu'on s'habitue c'est tellement puissant!

    L'objet que j'utilise pour obtenir la page est un HttpWebRequest.

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 53
    Par défaut
    Allo PatteDePoule
    Merci d'avoir pris le temps de me répondre. C'est bien ca Httpwebrequest que je m'était déjà servie.

    PAr exemple, avec le code que j'ai, voici une partie de la réponse que j'aimerais filtrer (Voir souligné):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    <dt>Enregistr�es �: </dt>
                        <dd>A�roport int. de Montr�al-Trudeau</dd>
                        <dd class="dd1">&nbsp;</dd>
                        <dt>Date: </dt>
                        <dd>21h00 HAE jeudi 19 juillet 2012</dd>
                      </dl>
                    </div>
                    <div id="citycondition">
                      <ul>
                        <li class="leftList">
                          <dl class="leftCol">
                            <dt>Condition:</dt>
                            <dd>G�n�ralement d�gag�</dd>
                            <dd class="dd1">&nbsp;</dd>
                            <dt>Pression:</dt>
                            <dd>101,7&nbsp;kPa</dd>
                            <dd class="dd1">&nbsp;</dd>
                            <dt>Tendance:</dt>
                            <dd>� la hausse</dd>
                            <dd class="dd1">&nbsp;</dd>
                            <dd class="dd1">&nbsp;</dd>
                            <dt>Visibilit�:</dt>
                            <dd>48 km</dd>
                            <dd class="dd1">&nbsp;</dd> </dl>
                        </li>
                        <li class="rightList">
                          <dl class="rightCol">
                            <dt>Temp�rature:</dt>
                            <dd>20,0&deg;C</dd>
                            <dd class="dd1">&nbsp;</dd>
                            <dt>Point de ros�e:</dt>
                            <dd>8,5&deg;C</dd>
                            <dd class="dd1">&nbsp;</dd>
                            <dt>Humidit�:</dt>
                            <dd>47 %</dd>
                            <dd class="dd1">&nbsp;</dd>
                            <dt>Vent:</dt>
                            <dd class="longContent">N 8 km/h</dd>
                            <dd class="dd1">&nbsp;</dd>
                          </dl>
    Qu'est-ce que je dois faire a partir de là ?
    Merci
    Grégory

  6. #6
    Membre émérite Avatar de yonpo
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2010
    Messages
    617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 617
    Par défaut
    Salut,

    Il y a Html Agility Pack pour extraire facilement du contenu d'une page web.

  7. #7
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 91
    Par défaut
    Si tu veux le faire à la main :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    //Recupération du code source
    string uri = "http://www.tapage.fr";
    WebRequest wReq = WebRequest.Create(new Uri(uri))
    WebResponse wResp = wReq.GetResponse();
    StreamReader sr = new StreamReader(wResp.GetResponseStream();
    string str = sr.ReadToEnd();
     
    //Recupération de la donnée intéressante
    str = str.Substring(str.IndexOf("Date:")+"Date:".Length);
    str = str.Substring(str.IndexOf("<dd>")+"<dd>".Length);
    string tavaleur = str.Substring(0,str.IndexOf("<"));
    Tu l'auras compris, c'est pas bien difficile. Une fois que tu as ta chaine de caractère, tu coupe ce dont tu n'as pas besoin, et tu prends ce que tu as besoin. Généralement tu peux te débrouiller assez facilement, il y a de nombreuses choses qui sont génériques aux pages web et n'apparaissent qu'une seule fois dans la page.

    Genre dans une recherche, les site mettent en page pour les résultats, donc tu peux potentiellement arriver jusqu'au début des résultats de recherche en une seule "découpe" (des trucs genre : <div class="result"> sont très pratique si tu veux te faciliter la tâche !)

  8. #8
    Membre averti
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 53
    Par défaut
    Bonjour
    Merci Al_th. J'ai essayé vite fait ce que tu m'as donné comme info et cela a l'air de très bien fonctionner.

    Je vais le tester demain et à partir de là je te reviendrais avec d'autres questions si besoin.

    En attendant, pourquoi j'ai de petit signe bizarre à la place des "é" :

    Qu�bec
    - Pr�visions sur 7 jours - d'Environnement Canada

    Peut on les enlever ?
    Merci
    Grégory

  9. #9
    Membre émérite Avatar de yonpo
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2010
    Messages
    617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 617
    Par défaut
    C'est une question d'encodage. En UTF8, ça devrait aller.

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    StreamReader sr = new StreamReader(wResp.GetResponseStream(), Encoding.UTF8);

  10. #10
    Membre averti
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 53
    Par défaut [Résolu] Récupérer des informations d'un site web
    Allo

    Je peux dire que tout fonctionne très bien.
    Comme ce n'est pas moi qui ai ouvert cette discutions, est-ce qu'il y a la possibilité de dire que celle-ci est résolut ?

    Une petite dernière question. Al_th tu me dis "Si tu veux le faire à la main ". Est-ce qu'il existe d'autre façon de le faire ? Plus rapide, plus simple ?

    Merci à tous
    Grégory

  11. #11
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 91
    Par défaut
    Bonsoir Gregory_007,

    Quand je dis "Faire à la main", je veux dire par là que tu coupes ta chaîne de caractère petit bouts par petit bouts. C'est pas très générique, et si le site change sa structure en rajoutant un "Date:" avant, par exemple, ton logiciel pourra fonctionner un peu moins bien.

    Une solution différente serait, comme l'a dis Pattedepoule plus haut, l'utilisation d'expression régulière. Ces dernières sont très puissantes pour reconnaître des "patrons" qui reviennent dans ta chaîne de caractère.

    Si ton but c'est de développer ton application rapidement et sans te prendre la tête, le plus rapide/simple, c'est la méthode que je t'ai donné plus haut (tout du moins si tu n'es pas habitué des expressions régulières).

    Si le but est d'apprendre, les RegEx (Regular Expressions) sont plus intéressantes, et te permettrons peut être de faire des choses beaucoup plus poussées si tu en as besoin. Pour une application un peu similaire à la tienne, j'avais par exemple à retirer toute les balises HTML de ma chaine de caractère. Au lieu de défiler ma chaine de caractère en retirant tout ce qui se trouvait après un "<" jusqu'au prochain ">", les regex m'ont permis en 3 lignes de remplacer toute les occurences de la forme "<{quelquechose}>". C'est très puissant quand on sait s'en servir !

    Quand à la résolution de la discussion, il me semble que seul l'auteur ou un modérateur peut le faire.

    Cordialemet,

    Al_th

Discussions similaires

  1. Récupérer des informations d'un site web
    Par Net.Actu dans le forum Excel
    Réponses: 3
    Dernier message: 14/05/2015, 16h54
  2. [Toutes versions] Récupérer une information d'un site web en automatique . aïe
    Par alucard_xs dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/06/2014, 18h54
  3. Réponses: 0
    Dernier message: 30/03/2012, 17h08
  4. Collecter des informations sur des sites web.
    Par Ubiquité dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 25/01/2011, 18h35
  5. Récupérer des informations sur un site web
    Par JnewB dans le forum Langage
    Réponses: 11
    Dernier message: 08/04/2007, 20h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo