Récupérer code HTML d'une page internet [Résolu]

yoanpg 124 Messages postés dimanche 15 février 2009Date d'inscription 18 mai 2017 Dernière intervention - 12 mars 2016 à 17:59 - Dernière réponse : yoanpg 124 Messages postés dimanche 15 février 2009Date d'inscription 18 mai 2017 Dernière intervention
- 2 avril 2016 à 13:27
Bonjour à tous, :)

J'ai une fonction qui récupère le code HTML d'une page internet :
Private Function Html(WUrl As String) As String

WebBrowser.Navigate (WUrl)
Do Until WebBrowser.ReadyState = READYSTATE_COMPLETE
        DoEvents
Loop
Html = WebBrowser.Document.documentElement.innerHtml

End Function


Le problème est que le code HTML retourné est tronqué, limité à environ 240 caractères.

Je ne pense pas que ce soit un problème de variable car si je mets un espion sur
WebBrowser.Document.documentElement.innerHtml
, déjà le code est tronqué.

Y a-t-il une limitation ? Est-il possible de récupérer le code complet de la page internet ?

Merci d'avance votre aide :)
Afficher la suite 

16 réponses

Répondre au sujet
ucfoutu 18035 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 17 février 2018 Dernière intervention - Modifié par ucfoutu le 13/03/2016 à 11:39
0
Utile
Bonjour,
Il te faut à mon sens attendre que tout "soit là" et le récupérer par outerHTML dans l'évènement qui le constate.
Essaye donc ceci :
Private Sub WebBrowser1_DocumentComplete()
html = WebBrowser1.Document.documentElement.outerHTML
End Sub


EDIT : ah oui ... Gaffe toutefois, si ton webbrowser affiche plusieurs Frames distincts dans une page (mais tu ne nous as rien dit à ce sujet ...)

________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
Commenter la réponse de ucfoutu
yoanpg 124 Messages postés dimanche 15 février 2009Date d'inscription 18 mai 2017 Dernière intervention - 13 mars 2016 à 11:55
0
Utile
Merci pour ta réponse.

En effet pas de frame dans ma page à afficher, seulement un tableau.

J'ai mis le code que tu me proposes, mais le résultat est le même, le code est tronqué au même endroit que avec mon code (vu avec l'espion de variables) :(
Commenter la réponse de yoanpg
ucfoutu 18035 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 17 février 2018 Dernière intervention - 13 mars 2016 à 13:24
0
Utile
Bon ...
Mets ici le lien de la page Web concernée ...
On y verra peut-être plus clair en ce qui concerne les raisons de cette "étrangeté" ....
Commenter la réponse de ucfoutu
yoanpg 124 Messages postés dimanche 15 février 2009Date d'inscription 18 mai 2017 Dernière intervention - Modifié par yoanpg le 13/03/2016 à 15:12
0
Utile
A la base c'est une page PHP dont le contenu dépend des paramètres passés en barre d'adresse. J'ai créé une page HTML qui contient le même contenu mais statique : http://www.sportingclubplaisance.org/formulaires/test.htm

Quand je teste avec cette page dans VB, j'ai le même comportement, l'élément outerHtml prend la valeur :
<HTML><HEAD>
<META content="text/html; charset=utf-8" http-equiv=Content-Type></HEAD>
<BODY>
<TABLE cellSpacing=0 border=1>
<TBODY>
<TR>
<TH bgColor=lightgrey>Time</TH>
<TH bgColor=lightgrey>ID</TH>
<TH bgColor=lightgrey>NOM</TH>
<TH bgColorl
Commenter la réponse de yoanpg
ucfoutu 18035 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 17 février 2018 Dernière intervention - 13 mars 2016 à 17:28
0
Utile
On dirait que le body n'est pas lu (et donc non plus le tbody)
Essaye (juste pour voir) de tout "embarquer" avec .DocumentText

Commenter la réponse de ucfoutu
yoanpg 124 Messages postés dimanche 15 février 2009Date d'inscription 18 mai 2017 Dernière intervention - 13 mars 2016 à 18:18
0
Utile
Je comprends pas bien ce que tu me proposes.
C'est mon code VB que je dois modifier ? Comment ?
Merci
Commenter la réponse de yoanpg
ucfoutu 18035 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 17 février 2018 Dernière intervention - Modifié par ucfoutu le 13/03/2016 à 18:38
0
Utile
Désolé. Cette propriété n'existe pas sous VB6.
Va falloir essayer autrement
Peut-être en invoquant d'abord l'objet Body
WebBrowser1.Document.body.innerHTML
????

________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
Commenter la réponse de ucfoutu
yoanpg 124 Messages postés dimanche 15 février 2009Date d'inscription 18 mai 2017 Dernière intervention - 16 mars 2016 à 11:41
0
Utile
Avec cette propriété ça me retourne la même chose, le code HTML tronqué :(
Commenter la réponse de yoanpg
herman291 6 Messages postés vendredi 4 avril 2014Date d'inscription 29 mars 2016 Dernière intervention - 26 mars 2016 à 18:49
0
Utile
Salut, on est en train de faire la même chose...


Tape dans google Grossamer... il y a une fct de post et get secure avec u dirve virtuel et possibilité de bd perl etc...

Code complet mais fait attention il y a plusieurs zip de revision
http://www.vbforums.com/showthread.php?532752-VB6-Yet-Another-Web-Server
Commenter la réponse de herman291
yoanpg 124 Messages postés dimanche 15 février 2009Date d'inscription 18 mai 2017 Dernière intervention - 1 avril 2016 à 19:20
0
Utile
1
Ca me parait bien compliqué tout ça !
ucfoutu 18035 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 17 février 2018 Dernière intervention - 1 avril 2016 à 19:59
C'est exactement ce que je me suis dit en découvrant la vraie recette du vrai homard à l'armoricaine. Et j'ai alors décidé de ne pas m'en mêler et d'aller déguster ce plat préparé par un bon chef dans un bon restaurant, en lieu et place.
Commenter la réponse de yoanpg
CGSI3 417 Messages postés vendredi 22 février 2008Date d'inscription 7 janvier 2018 Dernière intervention - Modifié par CGSI3 le 1/04/2016 à 20:11
0
Utile
Bonsoir a tous,

Je suis également sur ce genre de recherche,
je passe rapidement vous donner une piste a suivre vu que j'ai également trouvé très peu de réponse a mon problème.

La parade que j'ai trouvé est la suivante .. Attendre
A vous de régler et améliorer ce code

  
Try
WebBrowserTemp.ScriptErrorsSuppressed = True
Dim debutA As Long = Environment.TickCount ' millisec
WebBrowserTemp.Navigate(REMOTE_URL)
Do While WebBrowserTemp.ReadyState <> WebBrowserReadyState.Complete
System.Threading.Thread.Sleep(10)
Application.DoEvents()
If (Environment.TickCount - debutA) / 1000 > 1 Then Exit Do
Loop
'MsgBox("Chargement terminé !")
Catch ex As Exception
Console.WriteLine("HTML : error " & ex.Message)
End Try


' Récuperer les tables
Dim TableCollection As HtmlElementCollection = WebBrowserTemp.Document.GetElementsByTagName("table")



Harf VB6 ... Biensur ce code est du VB.NET Dsl

Bonne soirée
Commenter la réponse de CGSI3
yoanpg 124 Messages postés dimanche 15 février 2009Date d'inscription 18 mai 2017 Dernière intervention - 1 avril 2016 à 21:12
0
Utile
J'ai pensé au problème de temps en effet.
J'ai donc fait un test de charger la page grâce à un premier bouton, puis de récupérer son contenu grâce à un second bouton.
Mais le problème reste le même.

Je ne comprends pas pourquoi ça fonctionne pas alors que pour d'autres (d'après les recherches que j'ai faites) ça semble fonctionner :(
Commenter la réponse de yoanpg
ucfoutu 18035 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 17 février 2018 Dernière intervention - 2 avril 2016 à 08:41
0
Utile
Re,
Vérifie quand même (sait-on jamais ?) que tu n'as pas un caractère null de terminaison chr(0) dans la chaîne importée
car sinon, ma foi ...
Regarde :
toto = "aaaaa" & Chr(0) & "bbbbb"
MsgBox toto
Text1.Text = toto

Essaye ce que tu obtiendrais en remplaçant chr(0) par "" avec la fonction replace
Commenter la réponse de ucfoutu
ucfoutu 18035 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 17 février 2018 Dernière intervention - Modifié par ucfoutu le 2/04/2016 à 11:40
0
Utile
Tout cela est assez curieux.
Je viens de lancer ton propre code sur le lien/test que tu as donné ===>>
voici ce que j'obtiens avec msgbox (affichage limlité) ===>>>

et voici ce que j'obtiens (non limité, donc) en textbox :
<HEAD>
<META content="text/html; charset=utf-8" http-equiv=Content-Type></HEAD>
<BODY>
<TABLE border=1 cellSpacing=0>
<TBODY>
<TR>
<TH bgColor=lightgrey>Time</TH>
<TH bgColor=lightgrey>ID</TH>
<TH bgColor=lightgrey>NOM</TH>
<TH bgColor=lightgrey>Prénom</TH>
<TH bgColor=lightgrey>Naissance</TH>
<TH bgColor=lightgrey>Age</TH>
<TH bgColor=lightgrey>Sexe</TH>
<TH bgColor=lightgrey>Ceinture</TH>
<TH bgColor=lightgrey>CeintureTxt</TH>
<TH bgColor=lightgrey>Club</TH>
<TH bgColor=lightgrey>Responsable</TH>
<TH bgColor=lightgrey>Vérification</TH>
<TH bgColor=lightgrey>NouveauClub</TH></TR>
<TR>
<TD name="Time">1457713325348</TD>
<TD name="ID">1</TD>
<TD name="NOM">TEST</TD>
<TD name="Prénom">Tést</TD>
<TD name="Naissance">2000</TD>
<TD name="Age">Cadet</TD>
<TD name="Sexe">M</TD>
<TD name="Ceinture">1</TD>
<TD name="CeintureTxt">Blanche-jaune</TD>
<TD name="Club">GIMNASIO TENDO</TD>
<TD name="Responsable">rest</TD>
<TD name="Vérification">ok 12345</TD>
<TD name="NouveauClub">0</TD></TR>
<TBODY>
<TR>
<TD name="Time">1457800662926</TD>
<TD name="ID">2</TD>
<TD name="NOM">TSR</TD>
<TD name="Prénom">Tree</TD>
<TD name="Naissance">2000</TD>
<TD name="Age">Cadet</TD>
<TD name="Sexe">M</TD>
<TD name="Ceinture">1</TD>
<TD name="CeintureTxt">Blanche-jaune</TD>
<TD name="Club">GIMNASIO TENDO</TD>
<TD name="Responsable">resp</TD>
<TD name="Vérification">ok 12345</TD>
<TD name="NouveauClub">0</TD></TR>
<TR>
<TD name="Time">1457800662926</TD>
<TD name="ID">3</TD>
<TD name="NOM">DSF</TD>
<TD name="Prénom">Sf</TD>
<TD name="Naissance">2000</TD>
<TD name="Age">Cadet</TD>
<TD name="Sexe">M</TD>
<TD name="Ceinture">2</TD>
<TD name="CeintureTxt">Jaune</TD>
<TD name="Club">GIMNASIO TENDO</TD>
<TD name="Responsable">resp</TD>
<TD name="Vérification">ok 12345</TD>
<TD name="NouveauClub">0</TD></TR></TBODY></TABLE></BODY>

J'ai fait cela depuis un userform Excel.

________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
Commenter la réponse de ucfoutu
yoanpg 124 Messages postés dimanche 15 février 2009Date d'inscription 18 mai 2017 Dernière intervention - 2 avril 2016 à 13:27
0
Utile
Bon en fait effectivement le code HTML est extrait en entier.

Le problème venait de l'espion qui lui troque la valeur de la variable, mais si je l'écrit dans un fichier texte je retrouve bien tout mon code HTML.

Que de temps perdu pour un truc si bête :s

Merci beaucoup pour votre aide
Commenter la réponse de yoanpg

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.