WebBrowser et accent

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

Merci à vous pour vos réponses.

Stéphane

6 réponses

FREMYCOMPANY
Messages postés
276
Date d'inscription
jeudi 12 janvier 2006
Statut
Membre
Dernière intervention
22 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 ;-)   
3
FREMYCOMPANY
Messages postés
276
Date d'inscription
jeudi 12 janvier 2006
Statut
Membre
Dernière intervention
22 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

_____________________
Fremy
3
cs_Tef
Messages postés
6
Date d'inscription
mercredi 10 juillet 2002
Statut
Membre
Dernière intervention
17 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 !

Stéphane
0
cs_Tef
Messages postés
6
Date d'inscription
mercredi 10 juillet 2002
Statut
Membre
Dernière intervention
17 mai 2007

17 mai 2007 à 14:50
Merci bcp !
Avec tout ça, je devrais pouvoir me débrouiller :)

Merci encore à toi pour ton aide ;)

Stéphane
0

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

Posez votre question
brice2nice4
Messages postés
1
Date d'inscription
samedi 28 mai 2005
Statut
Membre
Dernière intervention
29 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


 
0
FREMYCOMPANY
Messages postés
276
Date d'inscription
jeudi 12 janvier 2006
Statut
Membre
Dernière intervention
22 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

_____________________
Fremy
0