WebBrowser et accent [Résolu]

cs_Tef 6 Messages postés mercredi 10 juillet 2002Date d'inscription 17 mai 2007 Dernière intervention - 17 mai 2007 à 09:15 - Dernière réponse : FREMYCOMPANY 278 Messages postés jeudi 12 janvier 2006Date d'inscription 22 décembre 2008 Dernière intervention
- 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 :)

Merci à vous pour vos réponses.

Stéphane
Afficher la suite 

6 réponses

Répondre au sujet
FREMYCOMPANY 278 Messages postés jeudi 12 janvier 2006Date d'inscription 22 décembre 2008 Dernière intervention - 17 mai 2007 à 10:05
+3
Utile
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 ;-)   
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de FREMYCOMPANY
FREMYCOMPANY 278 Messages postés jeudi 12 janvier 2006Date d'inscription 22 décembre 2008 Dernière intervention - 17 mai 2007 à 14:04
+3
Utile
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

_____________________
Fremy
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de FREMYCOMPANY
cs_Tef 6 Messages postés mercredi 10 juillet 2002Date d'inscription 17 mai 2007 Dernière intervention - 17 mai 2007 à 10:27
0
Utile
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 !

Stéphane
Commenter la réponse de cs_Tef
cs_Tef 6 Messages postés mercredi 10 juillet 2002Date d'inscription 17 mai 2007 Dernière intervention - 17 mai 2007 à 14:50
0
Utile
Merci bcp !
Avec tout ça, je devrais pouvoir me débrouiller :)

Merci encore à toi pour ton aide ;)

Stéphane
Commenter la réponse de cs_Tef
brice2nice4 1 Messages postés samedi 28 mai 2005Date d'inscription 29 mai 2007 Dernière intervention - 29 mai 2007 à 18:39
0
Utile
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


 
Commenter la réponse de brice2nice4
FREMYCOMPANY 278 Messages postés jeudi 12 janvier 2006Date d'inscription 22 décembre 2008 Dernière intervention - 29 mai 2007 à 19:41
0
Utile
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

_____________________
Fremy
Commenter la réponse de FREMYCOMPANY

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.