Récupération de données sur un site

studentjeje Messages postés 14 Date d'inscription vendredi 3 septembre 2004 Statut Membre Dernière intervention 5 janvier 2007 - 24 sept. 2004 à 13:55
Tamplan Messages postés 26 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 31 mars 2009 - 14 juil. 2005 à 16:40
Bonjour,

J'ai crée une application en VB6 pour des calculs de valorisation (appels à des calculs actuariels). Mon problème est d'automatiser l'imputation de certaines données en automatique au lieu de les saisir manuellement dans des texts box. Je voudrais récupérer des données sur un site spécifique et pouvoir les intégrer dans mon application.

Je cale totalement sur ce problème. J'ai regardé sur le forum des problèmes se rapportant à ce sujet mais restant sans réponses.
Je vous remercie d'avance pour votre aide fortement précieuse

Jeje

7 réponses

pcpunch Messages postés 1243 Date d'inscription mardi 7 mai 2002 Statut Membre Dernière intervention 18 février 2019 5
24 sept. 2004 à 14:14
Pour recuperer des données d'un site, il faut au préalable recuperer le code src de la page Html.

Pour cela tu utilise soit Inet, Winsock, ou le webbrowser (regarde dans mes src il y a un exemple avec ces 3 composants) . Pour ma part je dirait que le plus stable est winsock, suivi du webbrowser, inet apparait parfois instable(code src recupérer partielement ou mm plantage...)

Ensuite tu parcourt le code src a la recherche des données a extraire et tu les isoles dans des variables ou si il y en a beaucoup d'un un tableau dynamique afin de les exploité ensuite dans ton soft...

Voila en gros comment cela fonctionne, j'ai déposé aussi qq source qui utilise se procéder : allociné, moviecover (recupération de données sur un film (texte+image)...

Voila si tu veu de l'aide il faudrait donné l'url de la page et indiquer les données que tu souhaite recuperer...

++
0
yomm Messages postés 515 Date d'inscription dimanche 17 février 2002 Statut Membre Dernière intervention 10 mars 2008 3
24 sept. 2004 à 15:12
tu peux aussi passez par des API de inet ...

(comme je l'ai dit à pcpunch pour passer son source en class et non plus en ocx...)

si tu veux un exemple regarde dans mes sources celui sur le yommcddb version class...

après si tu veux pas t'embéter utilise les controles internet déjà existants...

voilà @+

Yomm >:)

[mailto:yommvb@ifrance.com yommvb@ifrance.com]

Et que la source soit avec toi!!!!!
0
studentjeje Messages postés 14 Date d'inscription vendredi 3 septembre 2004 Statut Membre Dernière intervention 5 janvier 2007
24 sept. 2004 à 16:01
Merci beaucoup pour les infos. J'ai téléchargé et regardé le code sur OCX Allo Ciné. Cela me paraît jouable sur la compréhension mais il me faudra un peu de temps pour l'assimiler.
Les données à récupérer sont sur :

http://www.tresorier.com/marketdata.html

Il me faut récupérer les données de taux en euros [EONIA jusqu'à E12M et les données de courbe des taux swaps ] puis les mettre dans des captions.

Je vais essayer de travailler de mon côté mais si vous voulez bien m'aidez, je vous remercie encore pour votre aide.

Cordialement,

Jeje
0
pcpunch Messages postés 1243 Date d'inscription mardi 7 mai 2002 Statut Membre Dernière intervention 18 février 2019 5
24 sept. 2004 à 20:29
Voila comme j'avais qq mn a perdre et que je maitrise pas mal l'extraction de données depuis les sites web, ci dessous le code pour la recupération de tes données.

Il faut que tu place un Composant webbrowser1 (Microsoft Internet Control) et un bouton command1.
Le code est assez commenté, et pas particuliérement difficile a comprendre. mais si tu a besoin d'explication vas y ???

Dim Src As String 'Stocke le code src de la page html

'Variable recupérant les données
Dim EONIA As String
Dim E1M As String
Dim E3M As String
Dim E6M As String
Dim E12M As String

Private Type SwapsV
Nom As String
Valeur As String
Variation As String
End Type
'Tabeau recevant les données swaps
Dim Swaps(1 To 10) As SwapsV

Private Sub Command1_Click()
Call RecupérationDonnées
End Sub

Sub RecupérationDonnées()
Dim Src As String, Debut As Integer, Fin As Integer, Pos As Integer
'Affichage dans le webbrosser de la page html
WebBrowser1.Navigate "http://www.tresorier.com/marketdata.html"
End Sub

Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
'Lorsque le document est chargé dans le webbrowser
Src = WebBrowser1.Document.documentElement.innerHTML 'recupération du codesrc

'Recupération Données
Call Extraction("EONIA", EONIA)
Call Extraction("E1M", E1M)
Call Extraction("E3M", E3M)
Call Extraction("E6M", E6M)
Call Extraction("E12M", E12M)

Dim Temp As String 'variable stockant les val swaps pour affichage msgbox

For i = 1 To 10
Swaps(i).Nom = i & "A"
ExtractionSwaps Swaps(i).Nom, Swaps(i).Valeur, Swaps(i).Variation
'Actualisation de la variable Temp (cette variable ne sert que pour l exemple)
Temp = Temp & Swaps(i).Nom & " valeur: " & Swaps(i).Valeur & " Variation: " & Swaps(i).Variation & vbCrLf
Next i

MsgBox "EONIA :" & EONIA & vbCrLf & _
"E1M :" & E1M & vbCrLf & _
"E3M :" & E3M & vbCrLf & _
"E6M :" & E6M & vbCrLf & _
"E12M :" & E12M & vbCrLf & vbcrlc & _
"Swaps" & vbCrLf & Temp 'Affichage des swaps (Centraliser dans la Var pour exemple)

End Sub

Public Function Extraction(Nom As String, Variable As String)
'Fonction pour extraire les valeurs
Dim Pos As Integer, Debut As Integer, Fin As Integer
Pos = InStr(1, Src, Nom, vbTextCompare)
Debut = InStr(Pos, Src, "")
Fin = InStr(Debut, Src, "")
Variable = Mid(Src, Debut + 3, Fin - Debut - 3)
End Function

Public Function ExtractionSwaps(Nom As String, Valeur As String, Variation As String)
'Fonction pour extraire les valeurs Swaps
Dim Pos As Integer, Debut As Integer, Fin As Integer
'La valeur
Pos = InStr(1, Src, Nom, vbTextCompare)
Debut = InStr(Pos, Src, "size=1>")
Fin = InStr(Debut, Src, "<")
Valeur = Mid(Src, Debut + 7, Fin - Debut - 7)
'Variation
Debut = InStr(Fin, Src, "Var: ")
Fin = InStr(Debut, Src, "<")
Variation = Mid(Src, Debut + 5, Fin - Debut - 5)
End Function



Tu fait un copier coller dans le code de ta form et tu click sur le bouton. un msgbox affiche les données qui sont stocké dans des variable :

'Variable recupérant les données
Dim EONIA As String
Dim E1M As String
Dim E3M As String
Dim E6M As String
Dim E12M As String

Et pour les swaps dans un tableau
Private Type SwapsV
Nom As String
Valeur As String
Variation As String
End Type
'Tabeau recevant les données swaps
Dim Swaps(1 To 10) As SwapsV

La variable Temp est simplement la pour l'exemple, elle permet de centraliser les valeurs swaps dans la boucle afin de pas se taper toutes les lignes dans le msgbox.

A la place de la msgbox tu place ton code pour afficher les valeurs dans tes controls label ou autres :

Label1.Caption=EONIA
Label2.Caption=E1M

Pour les swaps c idem :

Label3= Swaps(1).Nom & " valeur: " & Swaps(1).Valeur & " Variation: " & Swaps(1).Variation

Label 3 affichera :
1A valeur: xxx Variation:xxx

Voila, j'éspére que cela te fera gagner du temp!!!!

Ps: j'ai essayé de recuperer la src html avec winsock et inet, mais le code src revient incomplet. Il n'y a qu'avec le webbrowser que cela marche ???? Le seul hic c'est que ca ne marche pas si la propriété du Visible du Webbrowser est a false. Donc l'astuce est de reduire sa taille au minimum et de le placer en arriére plan sur un controle (Bouton, textbox etc...) afin de ne pas le voir a l'ecran....

++ Pcpunch
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
studentjeje Messages postés 14 Date d'inscription vendredi 3 septembre 2004 Statut Membre Dernière intervention 5 janvier 2007
24 sept. 2004 à 20:57
merci beaucoup pcpunch. Je vais regarder le code et essayer de comprendre le fonctionnement car le plus important n'est pas de copier coller mais de comprendre ce que tu as écrit pour que je me l'approprie. EN tout cas merci beaucoup pour ton aide. je reviendrais vers toi si je bloque à un moment. Je vais regarder tout cela à tête reposée.

Cordialement,
jeje
0
chrysris Messages postés 7 Date d'inscription dimanche 13 février 2005 Statut Membre Dernière intervention 22 février 2005
13 févr. 2005 à 23:15
Bonsoir,<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />





J'ai peu être trouvé mon sauveur !!!!





J'ai 51 balais malheureusement au RMI et je programme en amateur pour m'occuper le temps … et j'ai un vrai problème !

Pourrais-tu me dire STP ou (m'envoyer une source) pour faire un robot qui me récupère les résultats du tableau en jeu simple à cette adresse pour les mettre dans un fichier append .txt pour toutes les courses en fin de journée vers 18h30 ? :





Ce serai vraiment génial depuis que je cherche !





Pour changer de course il suffit de rajouter 1 à la fin de cette adresse.

http://www.zeturf.com/pages/results_0319200502130_03192005021301


D'avance un grand merci pour ton aide si cela est possible



Cordialement et sincèrement

Christian
0
Tamplan Messages postés 26 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 31 mars 2009
14 juil. 2005 à 16:40
Pour Studenjeje :

Autre méthode en faisant référence dans ton projet à Microsoft HTML Object Library, mets ceci dans un module :

Global EONIA As String
Global EM1 As String
Global EM3 As String
Global EM6 As String
Global EM12 As String


Global A01 As String
Global A02 As String
Global A03 As String
Global A04 As String
Global A05 As String
Global A06 As String
Global A07 As String
Global A08 As String
Global A09 As String
Global A10 As String


Sub LireValeurs()
Dim hMSHTML As New MSHTML.HTMLDocument
Dim hDocument As HTMLDocument
Dim hTable As HTMLTable
Dim hCell As HTMLTableCell


Dim tableau
Dim TableauTemp


Set hDocument = hMSHTML.createDocumentFromUrl("http://www.tresorier.com/marketdata.html", vbNullString)


' Attente du chargement de la page
While hDocument.readyState <> "complete"
DoEvents
Wend


' La table des valeurs
Set hTable = hDocument.All.tags("table").Item(3)


' On fait un tableau avec les valeurs
tableau = Split(hTable.innerText, vbCrLf)


' Chaque valeur dans le tableau contient le signe '='
TableauTemp = Split(tableau(2), "=")
EONIA = Trim$(TableauTemp(1))


TableauTemp = Split(tableau(3), "=")
EM1 = Trim$(TableauTemp(1))


TableauTemp = Split(tableau(4), "=")
EM3 = Trim$(TableauTemp(1))


TableauTemp = Split(tableau(5), "=")
EM6 = Trim$(TableauTemp(1))


TableauTemp = Split(tableau(6), "=")
EM12 = Trim$(TableauTemp(1))


' La table des taux swaps
Set hTable = hDocument.All.tags("table").Item(4)


' On fait un tableau avec les taux swaps
tableau = Split(hTable.innerText, vbCrLf)


' Chaque valeur dans le tableau contient l'expression 'Var'
TableauTemp = Split(tableau(4), "Var")
A01 = Replace(TableauTemp(0), "1A", "")


TableauTemp = Split(tableau(5), "Var")
A02 = Replace(TableauTemp(0), "2A", "")


TableauTemp = Split(tableau(6), "Var")
A03 = Replace(TableauTemp(0), "3A", "")


TableauTemp = Split(tableau(7), "Var")
A04 = Replace(TableauTemp(0), "4A", "")


TableauTemp = Split(tableau(8), "Var")
A05 = Replace(TableauTemp(0), "5A", "")


TableauTemp = Split(tableau(9), "Var")
A06 = Replace(TableauTemp(0), "6A", "")


TableauTemp = Split(tableau(10), "Var")
A07 = Replace(TableauTemp(0), "7A", "")


TableauTemp = Split(tableau(11), "Var")
A08 = Replace(TableauTemp(0), "8A", "")


TableauTemp = Split(tableau(12), "Var")
A09 = Replace(TableauTemp(0), "9A", "")


TableauTemp = Split(tableau(13), "Var")
A10 = Replace(TableauTemp(0), "10A", "")


Set hTable = Nothing
Set hDocument = Nothing
Set hMSHTML = Nothing


End Sub

Tu as toutes les données désirées ;-)

En espérant que ça t'aide ...
0
Rejoignez-nous