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

VB.NET Discussion :

récuperer données du web


Sujet :

VB.NET

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    505
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2006
    Messages : 505
    Par défaut récuperer données du web
    Bonjour,

    je travail depuis quelques mois à récuperer des données du net, je me bute à un genre de pages qui est en Java (je crois). j'apprécirais vos conseils.

    la page qui me pose problème est celle de l'onglet "Financier" de cet page entre autre.

    http://tmx.quotemedia.com/quote.php?...=aab&locale=FR

    premièrement est-ce possible de récuperer les données de cette page ?

    si oui, comment dois-je m'y prendre ?

    merci

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2010
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2010
    Messages : 151
    Par défaut
    Bonsoir,

    Si tu regardes dans l'onglet Financier, afficher le code source, la partie qui t'interesse est la suivante (il me semble) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <div class="qmFinancials"> 
    <script LANGUAGE="javascript" TYPE="text/javascript" src="http://app.quotemedia.com/quotetools/quoteModule.go?webmasterId=101020&cp=off&toolWidth=740&action=showFinancials&hiddenTabs=all&symbol=AAB&targetsym=qm_symbol&qtBar=off&targetURL=http://tmx.quotemedia.com/financials.php&locale=fr"></script></div>
    Lorsque tu regardes le résultat de la page appelée, tu as toutes la page comme affichée dans l'onglet.

    Ensuite pour découper les données, surement un gros coup de RegEx, mais y'a du boulot en amont pour l'analyser.

    En espérant avoir répondu à tes question,

    @+
    Mat

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 124
    Par défaut
    Avec le regex , tu ne vas pas rigoler .
    Je te propose d’analyser le code source html avec la dll htmlagilityPack

    L’idéal serait d’avoir un id unique qui t’intéresses .

    Sinon , une autre piste serait d’utiliser .GetelementbyTag au lieu de .GetElementById .Ou bien une astuce pour récuperer la valeur de class="qm_maintext" des trucs comme ça .

    A titre d’exemple indicatif uniquement en supposant que l’id copyteaser soit unique dans ta page html .

    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
    Imports System.IO
    Imports HtmlAgilityPack
    Imports System.Net
    Public Class Form1
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            recup()
        End Sub
        Private Function recup() As String
     
            Dim doc = New HtmlDocument()
            Dim wc = New WebClient()
            Using stream = wc.OpenRead("http://tmx.quotemedia.com/financials.php?qm_symbol=AAB")
                doc.Load(stream)
            End Using
     
     
            Dim Test = doc.GetElementbyId("copyTeaser").InnerText
            MsgBox(Test)
     
            Return Test
        End Function
    End Class
    Et voici le lien pour télécharger la dll d’analyse de code source html
    http://htmlagilitypack.codeplex.com/

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2010
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2010
    Messages : 151
    Par défaut
    En effet, j'oublie toujours le HTML Agility Pack pour n'avoir jamais eu besoin de l'utiliser jusque là.

    Je pense qu'il est plus adapté

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    505
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2006
    Messages : 505
    Par défaut
    merci de vos réponses

    j'essai de fignoler avec le code proposer par aA189 et j'obtiens une erreur à la ligne 14

    L'exception System.NullReferenceException n'a pas été gérée
    Message=La référence d'objet n'est pas définie à une instance d'un objet.
    Source=HtmlAgilityPack
    StackTrace:
    à HtmlAgilityPack.HtmlDocument.ReadDocumentEncoding(HtmlNode node) dans C:\Source\htmlagilitypack\Trunk\HtmlAgilityPack\HtmlDocument.cs:ligne 1916
    à HtmlAgilityPack.HtmlDocument.PushNodeEnd(Int32 index, Boolean close) dans C:\Source\htmlagilitypack\Trunk\HtmlAgilityPack\HtmlDocument.cs:ligne 1805
    à HtmlAgilityPack.HtmlDocument.Parse() dans C:\Source\htmlagilitypack\Trunk\HtmlAgilityPack\HtmlDocument.cs:ligne 1468
    à HtmlAgilityPack.HtmlDocument.Load(TextReader reader) dans C:\Source\htmlagilitypack\Trunk\HtmlAgilityPack\HtmlDocument.cs:ligne 769
    à HtmlAgilityPack.HtmlDocument.Load(Stream stream) dans C:\Source\htmlagilitypack\Trunk\HtmlAgilityPack\HtmlDocument.cs:ligne 587
    à PWebBilan.Form1.recup() dans C:\Users\Mario\Documents\Visual Studio 2010\Projects\PWebBilan\PWebBilan\Form1.vb:ligne 16
    à PWebBilan.Form1.DemarreToolStripMenuItem_Click(Object sender, EventArgs e) dans C:\Users\Mario\Documents\Visual Studio 2010\Projects\PWebBilan\PWebBilan\Form1.vb:ligne 8
    à System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
    à System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)
    à System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
    à System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
    à System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
    à System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
    à System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
    à System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
    à System.Windows.Forms.Control.WndProc(Message& m)
    à System.Windows.Forms.ScrollableControl.WndProc(Message& m)
    à System.Windows.Forms.ToolStrip.WndProc(Message& m)
    à System.Windows.Forms.MenuStrip.WndProc(Message& m)
    à System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
    à System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
    à System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
    à System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
    à System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
    à System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
    à System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
    à Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
    à Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
    à Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
    à PWebBilan.My.MyApplication.Main(String[] Args) dans 17d14f5c-a337-4978-8281-53493378c1071.vb:ligne 81
    à System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
    à System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
    à Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
    à System.Threading.ThreadHelper.ThreadStart_Context(Object state)
    à System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
    à System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
    à System.Threading.ThreadHelper.ThreadStart()
    InnerException:
    pourquoi ??

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 124
    Par défaut
    En effet il y a un problème ...

    Je me suis posé la même question que toi il y a pas longtemps .
    Et comme toi , je suis d'abord partis sur la piste du regex .

    http://www.developpez.net/forums/d11...x-mal-formule/

    J'aie bien réussi à retirer des infos de la toile .Donc c'est possible .

    Pour t'instruire vois le lien ci-dessous qui m'a beaucoup aidé
    http://howtostartprogramming.com/vb-net/
    Voir les vidéos 47-48 et 54 notamment avec le regex .

    Je ne peux pas t'aider plus pour ton bug , je ne suis autodidacte avec plein de lacunes

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    505
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2006
    Messages : 505
    Par défaut
    Merci beaucoup aA189

    je vais visionner ça, je suis moi même autodidacte et j'ai toujours évité les regex car j'ai toujours réussi à récupérer ce que j'avais besoin sans l'utiliser.

    Je vais m'y attarder un instant.

Discussions similaires

  1. [Débutant] Récuperer données d'une page Web
    Par FCL31 dans le forum VB.NET
    Réponses: 30
    Dernier message: 24/11/2013, 16h36
  2. Récuperer données page web
    Par iperkut dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 23/09/2010, 19h51
  3. Réponses: 4
    Dernier message: 20/11/2007, 13h44
  4. Réponses: 13
    Dernier message: 28/07/2005, 13h11
  5. Récuperer Titre page web en cours!!!
    Par GeDeon35 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 31/05/2005, 23h26

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