Récupérer le texte d'une page web (non html) [Résolu]

Flocreate 307 Messages postés lundi 17 juillet 2006Date d'inscription 27 mai 2012 Dernière intervention - 30 juin 2009 à 22:03 - Dernière réponse : Flocreate 307 Messages postés lundi 17 juillet 2006Date d'inscription 27 mai 2012 Dernière intervention
- 2 juil. 2009 à 22:52
Bonjour a tous,
Mon problème est simple, je souhaite récupérer un texte affiché dans une page Web.

J'utilise un WebBrowser qui m'ouvre parfaitement la page  et est capable de me donner le code source.
Mais voila, le code source ne contient pas le texte.

En concret , voici un screen shot de ma page :
http://www.imagup.com/pics/1246422602.html

Et voici le code source :
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Guerre Tribale</title>
<link rel="stylesheet" type="text/css" href="css/stamm.css?1242999659" />
<script type="text/javascript">
// <![CDATA[
window.setInterval("reload('ad_sky.php')", 180000);
var lastLocation = null;
function reload(src_ad) {
var currentLocation = frames.main.location.href;
if(lastLocation != currentLocation) {
frames.ad.location=src_ad;
lastLocation = currentLocation;
}
}
// ]]>
</script>
</head>

<frameset cols="*, 165" frameborder="0" framespacing="0" border="0">
<frame frameborder="0" marginwidth="5" marginheight="5" border="0" src="game.php?screen=overview&amp;intro&amp;popup" name="main" />
<frame frameborder="0" scrolling="no" noresize marginwidth="7" marginheight="0" src="ad_sky.php" name="ad" />
</frameset>

</html>

comme le texte est affiché, on doit bien pouvoir le lire quelque part
et comme de bien entendu, je me refuse a faire un pilotage de la souris qui irait sur briller le texte , un Ctrl C, un ctrl V et un import a partir du press papier
en sachant que le but est que le browser reste caché...
Alors, comment puis-je faire pour récupérer le texte affiché genre le "AdelaTerre" ou le "74 par heure"

merci d'avance

Florentcreate
Afficher la suite 

17 réponses

Répondre au sujet
PCPT 13367 Messages postés lundi 13 décembre 2004Date d'inscription 10 mars 2017 Dernière intervention - 30 juin 2009 à 22:26
+3
Utile
salut,

une fois le document chargé (document_complete), tu peux récupérer (variable) le contenu du .document.innertext

++

Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de PCPT
Flocreate 307 Messages postés lundi 17 juillet 2006Date d'inscription 27 mai 2012 Dernière intervention - 30 juin 2009 à 23:11
0
Utile
merci de ta réponse, cependant, dans WebBrowser1.Document il n'y a pas de InnerText
(c ce que tu sous entendais avec le 'variable ?)

Alors, le innertext se cache t il quelque part ailleur, ou il faut utiliser une autre methode ?

d'apres msdn,  Document ne marche que sur une source HTML

je continue de chercher, les aides sont les biens venues ^^

florentcreate
Commenter la réponse de Flocreate
PCPT 13367 Messages postés lundi 13 décembre 2004Date d'inscription 10 mars 2017 Dernière intervention - 30 juin 2009 à 23:37
0
Utile
j'ai tapé directement dans cette fenêtre sans vérifier...,
un petit "innertext" sur google t'aurais permis de trouver :

.Document.documentElement.innertext

bonne soirée
Commenter la réponse de PCPT
Flocreate 307 Messages postés lundi 17 juillet 2006Date d'inscription 27 mai 2012 Dernière intervention - 30 juin 2009 à 23:54
0
Utile
hihi, e bien non, j'ai les yeux coolés au débugger : loccal variables
mais ni dans les innerText ni dans innerHTML je ne trouve le texte affiché.
dans le innerHTML d'ailleur je trouve le code source de la page tel que marqué dans le post du départ ^^
afaire a suivre
Commenter la réponse de Flocreate
PCPT 13367 Messages postés lundi 13 décembre 2004Date d'inscription 10 mars 2017 Dernière intervention - 1 juil. 2009 à 00:13
0
Utile
je viens de faire le test (au cas où) avec google => succès !

aurais-tu une url de test valide? (du genre document généré par JS après le chargement du navigateur, au final)

ps : ta capture n'est pas visible. souvent des problèmes avec imageup. perso je te conseille www.cijoint.fr
Commenter la réponse de PCPT
Flocreate 307 Messages postés lundi 17 juillet 2006Date d'inscription 27 mai 2012 Dernière intervention - 1 juil. 2009 à 00:36
0
Utile
http://www.cijoint.fr/cjlink.php?file=cj200907/cijxUP09eo.jpg



je ne sais pas a quel moment on obtient le html final. Je n'y connais pas grand chose en fichiers web.
cependant, je pense que c'est du php. donc en théorie du coté serveur non ?

en fait je n'ai pas fait de test avec d'autre URL, je reste sur la page qui m'intéresse.

mais je persiste, si le Webbrowser affiche c'est qu'il doit bien y avoir le code quelque part. non ?
Commenter la réponse de Flocreate
PCPT 13367 Messages postés lundi 13 décembre 2004Date d'inscription 10 mars 2017 Dernière intervention - 1 juil. 2009 à 07:03
0
Utile
tout dépend de ce qui est affiché

si c'est de flash par exemple, il n'y a rien à chercher, pourtant à lire oui...

un bouton appelle une fonction javascript, du texte peut-être "dessiné" sur la page, ce sans générer un nouvel évènement "document_complete"
donc pareil, la "source" est la même avant et après le click, et pourtant pas le résultat visuel

je n'ai pas d'exemple d'url du même type sous la main

sans autre détail, je pencherai pour ta première piste : copier/coller

pour copier sans avoir la visibilité de la page :
Clipboard.Clear
Webbrowser1.ExecWB OLECMDID_SELECTALL, OLECMDEXECOPT_DODEFAULT


Webbrowser1



.ExecWB OLECMDID_COPY, OLECMDEXECOPT_DODEFAULT




++

Commenter la réponse de PCPT
Flocreate 307 Messages postés lundi 17 juillet 2006Date d'inscription 27 mai 2012 Dernière intervention - 1 juil. 2009 à 13:23
0
Utile
je te remercie, je vais opter pour cette solution.
Je re-coderai si je trouve mieux ^^
Commenter la réponse de Flocreate
Flocreate 307 Messages postés lundi 17 juillet 2006Date d'inscription 27 mai 2012 Dernière intervention - 1 juil. 2009 à 13:45
0
Utile
heu, une derniere chose ^^

j'ai un objet RichTextBox dont le nom est RTB

apres avoir fait les lignes
Clipboard.Clear
Webbrowser1.ExecWB OLECMDID_SELECTALL, OLECMDEXECOPT_DODEFAULT
Webbrowser1.ExecWB OLECMDID_COPY, OLECMDEXECOPT_DODEFAULT
je fait
            Form1.RTB.Text = Clipboard.GetText

mais le textbox reste vide
pourtant quand je le fait a la main  (Ctrl+C ; Ctrl+V) , ça me le remplit

une idée ?
Commenter la réponse de Flocreate
PCPT 13367 Messages postés lundi 13 décembre 2004Date d'inscription 10 mars 2017 Dernière intervention - 1 juil. 2009 à 14:19
0
Utile
... j'ai eu quelques difficultés à trouver la source du problème :

tu as des zones de texte (ou autres conteneurs), dont une a le focus (même si le navigateur est masqué)
lors du _SELECTALL, c'est donc le contenu de cette zone, vide sans doute, qui est sélectionné
il faudrait tricher pour changer ce focus, seulement pour çà
il faut
connaitre le nom des éléments, indiqués dans le script JS

alors le _SELECTALL fonctionnera, et le reste aussi
Commenter la réponse de PCPT
Flocreate 307 Messages postés lundi 17 juillet 2006Date d'inscription 27 mai 2012 Dernière intervention - 1 juil. 2009 à 22:09
0
Utile
arf désolé pour le post ci dessus, c'est une fausse manip, si on peu le supprimer merci de le faire ou de me dire comment le faire

Concernant le sujet,
Pour continuer sur ta lancée PCPT :
la page contient 2 frames, peut être le prolème viens t'il du fait que il y a un objet vide dont le seul but est de contenir les frames. dans ce cas, il faudrait selectionner le frame adéquate et faire la procédure.

J'ai finalement trouvé un autre moyen
Référence nécéssaire : Microsoft CDO for Windows 2000 Library
voici le code :
                Dim message As New CDO.message
                Call message.CreateMHTMLBody(WB.LocationURL, cdoSuppressImages, "", "")
                Form1.RTB.Text = message.GetStream.ReadText
                Set message = Nothing

je met un supress image parsqu'il code l'image en ascci et que ca ne me sert a rien ^^
si vous avez des commentaires, ils sont les bienvenus
Commenter la réponse de Flocreate
PCPT 13367 Messages postés lundi 13 décembre 2004Date d'inscription 10 mars 2017 Dernière intervention - 1 juil. 2009 à 22:19
0
Utile
çà a l'air d'une solution fiable

je me demande néanmoins : CDO est lié à outlook, qui peut ne pas être installé sur le poste client
Commenter la réponse de PCPT
Flocreate 307 Messages postés lundi 17 juillet 2006Date d'inscription 27 mai 2012 Dernière intervention - 1 juil. 2009 à 22:29
0
Utile
A, c'est un code que j'ai repris, je l'ai bidouillé mais au final, je ne le connais pas.
Je ne saurais donc dire si Outlook est imposé.
De toute manière, outlook non installé empêche t il d'avoir la dll requise dans le répertoire de l'application ?
(bon, je suppose que la dll est propriétaire... le problème resterait donc le même)

Il y a tant a apprendre et seulement 24 heures dans une journée
VB6, quand yen a plus yen a encore
Commenter la réponse de Flocreate
PCPT 13367 Messages postés lundi 13 décembre 2004Date d'inscription 10 mars 2017 Dernière intervention - 1 juil. 2009 à 23:09
0
Utile
j'ai raccourci par habitude, je pensais à outlook express
or quand on le désinstalle c'est par bidouilles (différents patches et autres appli maison), je ne sais pas si la dll est supprimée ni si , isolée, elle resterait fonctionnelle
Commenter la réponse de PCPT
Flocreate 307 Messages postés lundi 17 juillet 2006Date d'inscription 27 mai 2012 Dernière intervention - 2 juil. 2009 à 00:35
0
Utile
ahaha,

maintenant que j'arrive a récupérer ce que je veux, je me nds compte de ce qui a mon avis faisait rater la procédure juste avec le web browser :

le fichier comporte 2 frames comme je le disais plus haut.
donc si je demande un Debug.print URL dans l'evenenement WebBrowser1_Document_Complete(...)
il me liste les pages chargées et la surprise :
1) il charge la page d'origine : le code que contient mon premier post
2) il charge le fichier qui m'interresse
3) il charge le frame de droite qui est une publicité --> addresse + ou - alléatoire

^^ que c'est compliqué tout cela ^^

VB6, quand yen a plus yen a encore
Il y a tant a apprendre et seulement 24 heures dans une journée
Commenter la réponse de Flocreate
PCPT 13367 Messages postés lundi 13 décembre 2004Date d'inscription 10 mars 2017 Dernière intervention - 2 juil. 2009 à 01:12
0
Utile
rappel : le copier coller était une solution "peu propre", à défaut d'avoir l'adresse....

et çà, tu es le seul à l'avoir
Commenter la réponse de PCPT
Flocreate 307 Messages postés lundi 17 juillet 2006Date d'inscription 27 mai 2012 Dernière intervention - 2 juil. 2009 à 22:52
0
Utile
bon, ben j'ai pu mener mon projet a son terme, je vais d'ailleurs le poster ^^
Je souhaite remercier toutes les personnes qui 'mon aidé sur cette question.

bonne continuation a tous et a très bientôt sur VBFrance

VB6, quand yen a plus yen a encore
Il y a tant a apprendre et seulement 24 heures dans une journée
Commenter la réponse de Flocreate

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.