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
Rejoignez-nous