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

Résolu
Flocreate Messages postés 300 Date d'inscription lundi 17 juillet 2006 Statut Membre Dernière intervention 27 mai 2012 - 30 juin 2009 à 22:03
Flocreate Messages postés 300 Date d'inscription lundi 17 juillet 2006 Statut Membre Dernière intervention 27 mai 2012 - 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

17 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
30 juin 2009 à 22:26
salut,

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

++

3
Flocreate Messages postés 300 Date d'inscription lundi 17 juillet 2006 Statut Membre Dernière intervention 27 mai 2012 3
30 juin 2009 à 23:11
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
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
30 juin 2009 à 23:37
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
0
Flocreate Messages postés 300 Date d'inscription lundi 17 juillet 2006 Statut Membre Dernière intervention 27 mai 2012 3
30 juin 2009 à 23:54
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
0

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

Posez votre question
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
1 juil. 2009 à 00:13
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
0
Flocreate Messages postés 300 Date d'inscription lundi 17 juillet 2006 Statut Membre Dernière intervention 27 mai 2012 3
1 juil. 2009 à 00:36
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 ?
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
1 juil. 2009 à 07:03
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




++

0
Flocreate Messages postés 300 Date d'inscription lundi 17 juillet 2006 Statut Membre Dernière intervention 27 mai 2012 3
1 juil. 2009 à 13:23
je te remercie, je vais opter pour cette solution.
Je re-coderai si je trouve mieux ^^
0
Flocreate Messages postés 300 Date d'inscription lundi 17 juillet 2006 Statut Membre Dernière intervention 27 mai 2012 3
1 juil. 2009 à 13:45
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 ?
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
1 juil. 2009 à 14:19
... 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
0
Flocreate Messages postés 300 Date d'inscription lundi 17 juillet 2006 Statut Membre Dernière intervention 27 mai 2012 3
1 juil. 2009 à 22:09
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
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
1 juil. 2009 à 22:19
çà 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
0
Flocreate Messages postés 300 Date d'inscription lundi 17 juillet 2006 Statut Membre Dernière intervention 27 mai 2012 3
1 juil. 2009 à 22:29
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
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
1 juil. 2009 à 23:09
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
0
Flocreate Messages postés 300 Date d'inscription lundi 17 juillet 2006 Statut Membre Dernière intervention 27 mai 2012 3
2 juil. 2009 à 00:35
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
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
2 juil. 2009 à 01:12
rappel : le copier coller était une solution "peu propre", à défaut d'avoir l'adresse....

et çà, tu es le seul à l'avoir
0
Flocreate Messages postés 300 Date d'inscription lundi 17 juillet 2006 Statut Membre Dernière intervention 27 mai 2012 3
2 juil. 2009 à 22:52
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
0
Rejoignez-nous