cs_Tef
Messages postés6Date d'inscriptionmercredi 10 juillet 2002StatutMembreDernière intervention17 mai 2007
-
17 mai 2007 à 09:15
FREMYCOMPANY
Messages postés276Date d'inscriptionjeudi 12 janvier 2006StatutMembreDernière intervention22 décembre 2008
-
29 mai 2007 à 19:41
Bonjour,
je cherche depuis 3 jours une solution à mon pb mais en vain.
Je veux récupérer les sources HTML pour ensuite récupérer certaines informations dans le but de faire un logiciel de gestion de jeux vidéos. Bref je fais un simple :
me.txtSource.Text = Me.WebBrowser.DocumentText
txtSource est mon champ texte multiligne qui va contenir le code source.
Si je regarde le contenu de mon champ texte après chargement de ma page web, je n'ai aucun accent dans mon champ texte en multiligne. Par exemple , pour Jeu vidéo, je vais voir s'afficher Jeu vido. plus de é !! les à on disparut, etc...
J'ai même essayé de changer mon champ texte en RichTextBox au cas où mais bon, je n'y croyais pas trop.
Je ne sais pas si cela vient de l'encodage Charset qui n'est pas en UTF8 sur certain site. Mais ça m'étonnerais qu'on ne puisse pas récupérer le texte sans garder les accents...
De plus, ce pb est génant dans la mesure ou certains sites vont t'afficher 1 à 2 joueurs ou 1 à 3 joueurs. Pour tester ça, comme c'est très variable, c'est pas possible.
Pareil, bcp de site n'utilise pas les balise Div avec id donc la méthode HtmlDocument.GetElementById est inutilisable... Et comme je ne suis pas un pro du VB.net, je me casse un peu les dents dessus mais étant collectionneur de jeux vidéos et aimant le dev, c'est un beau défi :)
FREMYCOMPANY
Messages postés276Date d'inscriptionjeudi 12 janvier 2006StatutMembreDernière intervention22 décembre 2008 17 mai 2007 à 10:05
Essaie ça :
WebBrowser.Document.DomDocument.documentElement.outerHTML
Sinon, passe par les transformateurs d'encodage :
Avec "WebBrowser.DocumentStream", tu récupères le contenu HTML sous forme de tableau de Bytes, puis tu utiliser System.Text.Encoding pour tenter différentes converstion...
Pour trouver l'encodage :
- HEADERS
- BALISES META
- BALISE <?xml ?>
Note que si tu veux juste la source de la page, pas besoin d'utiliser un WebBrowser, ajouter MSXML2 à tes ressources de projet et crée une instance de XMLHttpRequest; ensuite, ca fonctionne comme AJAX ;-)
FREMYCOMPANY
Messages postés276Date d'inscriptionjeudi 12 janvier 2006StatutMembreDernière intervention22 décembre 2008 17 mai 2007 à 14:04
Document Stream :
- Voir System.IO.Stream [MSDN; Google; ...] et System.IO en général
- Ca fait longtemps que je n'ai plus utilisé de Stream, mais je crois que tu dois utilser StreamInstance.Read(ByRef_ResultAsArrayOfBytes, TheLenghthOfTheStream)
XMLHTTPREQUEST : Voir AJAX
- Tu devrais trouver très facilement plein de tutoriels sur le web, mais en JavaScript. Ca ne fait rien, ca marche aussi pour VB .NET !
- Voila un exemple de code :
Dim Xhr as new MSXML2.XMLHttpRequest()
Xhr.Open("POST", TheUrl, false)
Xhr.Send(PostDataAsStringOrNothing)
' Le resultat :
' Xhr.responseText : la source de la page en tant que String
' Xhr.responseBody : la source de la page en tant qu'Array(Of Bytes)
' Xhr.responseStream : une sorte de Stream mais "version JavaScript", eviter de l'utiliser
cs_Tef
Messages postés6Date d'inscriptionmercredi 10 juillet 2002StatutMembreDernière intervention17 mai 2007 17 mai 2007 à 10:27
Génial merci !!!
J'avais trouvé DocumentStream mais étant débutant je n'ai pas trouvé d'explication à cette méthode.
Sais-tu où je pourrais trouver des informations avec exemples pour DocumentStream et XMLHttpRequest ?
Je ne sais pas comment fonctionne tout ça et je suis très curieux :)
Et puis mon application pourrait en être que plus alléger au niveau code je pense si c'est plus rapide et moins de contrôle à utiliser !
Merci par avance à toi et merci encore pour cette réponse !
brice2nice4
Messages postés1Date d'inscriptionsamedi 28 mai 2005StatutMembreDernière intervention29 mai 2007 29 mai 2007 à 18:39
Salut j'aimerais recuperer dans un text box ou autre (label, variable..) le contenu d'une page web. J'ai charger ma page dans un webbrowser (webbrowser.navigate "http://....") et j'ai essayer la propiete webbrowser.document pour recuperer le contenu de la page html mais je n'optien a chque fois que [object]. Pouriez vous m'expliquer comment marche le controle. Merci
FREMYCOMPANY
Messages postés276Date d'inscriptionjeudi 12 janvier 2006StatutMembreDernière intervention22 décembre 2008 29 mai 2007 à 19:41
WebBrowser.documentText ==> Contenu HTML
WebBrowser.Document ==> Contenu "Wrappé" en .NET depuis COM du DOM (ou Document Object Model)
WebBrowser.Document.DomDocument ==> Contenu COM au format DOM (Comme n'importe quel javascript)
Donc,
''' PSEUDO-CODE
Protected Property DotNetDocument() as HTMLDocument = WebBrowser.Document
Protected Property Document() as Object = WebBrowser.Document.DomDocument
Document.getElementById('ID') ou Document.getElementsByName("NAME") ou Document.getElementsByTagName("INPUT") ou Document.all.xyz