Import Page WEB en VBA : Récupération partielle du code source
Bonjour,
Je souhaite récupérér les données issu d'une page web :
http://81.248.141.204:8002/index.html
Un tableau sur la droite indique les valeurs que je souhaite relire.
J'ai utilisé, il me semble les codes sources disponibles ici :
Code:
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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
| Public Sub closeInter()
InternetCloseHandle (hSession)
End Sub
Sub test()
'getweblog("http://81.248.22.106:3232/","C:")
End Sub
Sub GetWeblog()
Dim url As String
Dim strFic As String
url = "http://81.248.22.106:3232/"
strFic = "d:\rien.txt"
' pointeur du lien lien
Dim hUrlFile As Long
Dim bBoucle As Boolean
' bloc de lecture par buffer 4 096 caractères
Dim sReadBuf As String * 4096
Dim OctetsLus As Long
' pointeurs des fichiers
Dim localFile As Long
' chronométrage du temps d'exécution
Dim t0 As Single, t1 As Single
t0 = GetTickCount()
' ouverture des ressources de navigation internet
openInter
' désignation d'un pointeur de fichier libre
localFile = FreeFile
' si le fichier existe déjà on l'efface
If Len(Dir(strFic)) > 0 Then Kill strFic
' ouverture du fichier en mode binaire
Open strFic For Binary As #localFile
' ouverture de l'url
hUrlFile = InternetOpenUrl(hSession, url, vbNullString, 0, INTERNET_FLAG_RELOAD, 0)
bBoucle = True
While bBoucle
sReadBuf = ""
' lecture par bloc de 4096 caractères
bBoucle = InternetReadFile(hUrlFile, sReadBuf, 4096&, OctetsLus)
' écriture par bloc dans le fichier local
Put #localFile, , Left(sReadBuf, OctetsLus)
If OctetsLus = 0 Then bBoucle = False
DoEvents
Wend
' fermeture du fichier local
Close #localFile
' fermeture des ressources de navigation
closeInter
t1 = GetTickCount()
Debug.Print "téléchargement du xml : "; Format((t1 - t0) / 1000, "0.000") & " s"
' parsing XML du fichier nous verrons ce point plus tard dans l'article
'xmlParser strFic
End Sub |
Hors je ne reçois vraiment qu'une partie du code source de la page, je ne comprends pas..
Ou je ne comprends pas le découpage de la page web.
Lorsque dans l'espion de variable, je regarde l'objet Html récupérer, je ne vois vraiment nulle part les données qui m’intéresse.
Le résultat de d:\rien.text est le suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Sunny WebBox</title>
</head>
<frameset rows="75,*,22" frameborder="no" border="2" framespacing="0">
<frame src="top.htm" name="topFrame" scrolling="NO" topmargin="0" leftmargin="0" marginheight="0"
marginwidth="0" noresize>
<frame src="home_frameset.htm" name="mainFrame" topmargin="0" leftmargin="0" marginheight="0"
marginwidth="0">
<frame src="bottom.htm" name="bottomFrame" scrolling="NO" topmargin="0" leftmargin="0"
marginheight="0" marginwidth="0" noresize>
</frameset>
</html> |
Je cherche depuis hier, et je ne vois vraiment rien, quelque chose doit m'échapper.
Hors lors de la lecture du code source depuis IE, je vois bien tout ce qui m’intéresse...
Please Help :o
Exemple de code en PHP pour inspiration
Hello, j'ai un exemple ici de code php qui copie un tableau d'une page html.
Le concept est de filtrer ton code source html au moyen de filtres pour récupérer les infos qui t'intéressent. Les filtres utilisent les regex et les fonctions php preg_match et preg_match_all. C'est une façon différente d'attaquer le problème.
Je débute avec le virtual basic mais je pense qu'il doit exister des fonctions similaires.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| <?php
'// L'adresse vers lequel pointe le script.
$fichier_depart = "http://www.tunnel.com/index.html";
'// Récupération du contenu de la page
$fichier = file_get_contents($fichier_depart);
'// Filtrage sur le tableau que je veux pomper (supposons que le page web en question à un tableau dont tu souhaites récupérer les données par exemple).
preg_match("#T\.D\. Application(.+)tableau que je veux pomper(.+)</table>#Usi", $fichier, $retour);
$contenu = $retour[1];
'// Filtrage des entrées une à une que je veux pomper
$filtre = "#<tr align=left><td align=middle> <font size=2 color=(?:.+) face=Arial>(.+)</td><td align=middle><font size=2 color=(?:.+) face=Arial>(.+)</font></td><td align=middle><font size=2 color=(?:.+) face=Arial>(.+)</td><td align=middle><font size=2 color=(?:.+) face=Arial>(.+)</td><td align=middle><font size=2 color=(?:.+) face=Arial>(.+)</td><td align=middle><font size=2 color=(?:.+) face=Arial>(.+)</td></tr>'."\n".'#Usi";
preg_match_all($filtre, $contenu, $retour);
'// Attribution des informations du tableau sur des variables
$pseudos = $retour[1];
$status = $retour[2];
...
//...
?> |
Ah PHP mon language préféré!
Ah PHP mon language préféré!
C'est un language pour serveur. Tu l'insères dans tes pages html. Il te faut un serveur si tu veux l'utiliser. tu peux soit utiliser un serveur fictif sur ton ordi (WAMPSERVER par exemple) soit trouver un véritable hébergeur de site web et faire tourner ton script en live sur la toile.
page d'accueil (index.html) avec du code PHP :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Accueil</title>
<?php include('meta.php'); include('lib/visiteurs.php');
echo'<link href="liste.css" rel="stylesheet" type="text/css" />';
?>
</head>
'... |
Voilà voilà. Sinon si tu veux travailler sur excel tas plutôt intérêt à rester en virtual basic.
GetelementById() sert à trouver les balises html avec une id. Tu ne peux pas utiliser cette fonction vu que tu sais pas à l'avance si le webmaster a utilisé des id et comment il les a nommées. Exemple : une balise div avec l'id primaryContentContainer :
<div id="primaryContentContainer">
Je pense que tu es obligé de passer par une regex (expression régulière). PHP utilise les expressions régulières rapides et performantes PCRE, issues d'un autre langage (le Perl). Je sais pas si ça existe en virtual basic.
Une jolie regex :
#(((https?|ftp)://(w{3}\.)?)(?<\!www)(\w+-?)*\.([a-z]{2,4}))#