Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

Aller à la page :  1 2

# Recuperer le contenu text du body

Envoyé par : gagalive

Date : 03/09/2007 12:20

Salut à tous, apres de nombreuses recherches sur le forum et les tutos j'ai pas vraiment trouvé ce que je cherche. Je voudrais bien savoir comment on pourrait recuperer le contenu d'un document html notament le contenu du body. En parlant de contenu je fais allusion au texte qui est présenté sur la page web.

Par exemple:

<html>
...<!-- ce qui apparait avant le body n'est pas important -->
...
  <body>
    <noscript... />
    <a..>ici un morceau de texte</a>
    <script...>
      un code js
    </script>
    <h3>un autre <a...>morceau</a> de texte</h3>
    ...
  </body>
</html>

Pour un tel document html le resultat devrait être: .ici un morceau de texte .un autre morceau de texte

Amicalement

# Re: Recuperer le contenu text du body

Envoyé par : hhf

Date : 03/09/2007 20:19

Pour ce genre de chose utilises l'inspecteur DOM, tu aurais trouvé sans mal :

  document.body.textContent;

Enfin, en tous cas, je pense que c'est ce que tu cherches.

# Re: Recuperer le contenu text du body

Envoyé par : gagalive

Date : 04/09/2007 01:07

Merci pour ta proposition, mais c'est pas vraiement ce que je cherche. En appliquant ta proposition le textContent contiendra aussi les codes JavaScript, noscript et tous autres objets. Je veux juste pouvoir recuperer le pur texte que le browser montre au client, sans codes rien que du texte.

En considerant encore mon exemple plus haut le resultat serait: ici un morceau de texte | un autre morceau de texte

Or avec ta proposition on aurait: ici un morceau de texte | un code js | un autre morceau de texte. un code js ne doit pas faire partit du resultat.

Amicalement

# Re: Recuperer le contenu text du body

Envoyé par : Christophe Charron

Date : 04/09/2007 09:02

J'imagine que la demande est côté client, en javascript ? Sinon, côté serveur, en php, existe strip_tags.

# Re: Recuperer le contenu text du body

Envoyé par : gagalive

Date : 04/09/2007 09:19

En fait ce processus est lancé en arriere plan, le client n'en a pas besoin. Le code ainsi netoyé doit ensuite être examiné pour faciliter l'extraction d'informations très precises. Mes connaissances en php ne sont pas à venter :-(

Amicalement

# Re: Recuperer le contenu text du body

Envoyé par : Christophe Charron

Date : 04/09/2007 09:23

Tu nes dans le chrome ou en remote ?

# Re: Recuperer le contenu text du body

Envoyé par : gagalive

Date : 04/09/2007 09:38

dans le chrome

Amicalement

# Re: Recuperer le contenu text du body

Envoyé par : Fabrice

Date : 04/09/2007 10:03

Salut gagalive, peux-tu apporter quelques précisions complémentaires s'il te plait.

  • Le code HTML que tu veux analyser est-il toujours formaté de la même façon ? en gros s'agit-il toujours de la même structure de page ou tu veux pouvoir analyser n'importe quelle page ?

Sinon comme cité plus haut, c'est en jouant avec le DOM que tu pourras faire ce que tu veux. Tu parcours chaque éléments contenu dans "body" et tu en extrais le texte. Lors du parcours des élément tu omets les éléments de type "script" pour éviter de récupérer le code javascript.

Fabrice

# Re: Recuperer le contenu text du body

Envoyé par : Fabrice

Date : 04/09/2007 10:16

Ceci devrait pouvoir te rendre service ;)

TreeWalker

Fabrice

# Re: Recuperer le contenu text du body

Envoyé par : gagalive

Date : 04/09/2007 10:20

Salut Fabrice, c'est exactement ce que je veux. Notament l'analyse doit être possible sur une page quelconque. C'est clair pour aboutir au resultat il me faudra manipuler le DOM, mon probleme c'est comment le faire pour pouvoir n'extraire que du texte qu'on voit sur le browser et non du code (script, noscript, et autres...).

# Re: Recuperer le contenu text du body

Envoyé par : gagalive

Date : 04/09/2007 11:05

j'ai essayé un test aveugle avec la propostion du Treewalker, histoire de me faire une meilleure idée du Treewalker: J'ai eu l'erreur suivante de la console de FF.

Erreur: uncaught exception: [Exception... "Object cannot be created in     
this context"  code: "9" nsresult: "0x80530009 
(NS_ERROR_DOM_NOT_SUPPORTED_ERR)"  location:  
"chrome://MyApiName/content/global.js Line: 56"]

Je sais pas trop le pourquoi?

# Re: Recuperer le contenu text du body

Envoyé par : joliclic

Date : 04/09/2007 12:53

Puisque tu es dans le chrome, tu pourrais utiliser nsIFormatConverter, qui permet de transformer du html en texte (par exemple "<strong>gras</strong>" en "*gras*"). Puisque c'est du html, tu peux récupérer le contenu html du body avec innerHTML, puis le convertir (çà marche peut être avec le contenu de tout le document, pas essayé).

Voilà le code que j'utilise dans une extension :

 htmlToText: function myext_htmlToText(aStr) {
   var formatConverter = Cc["@mozilla.org/widget/htmlformatconverter;1"]
                        .createInstance(Ci.nsIFormatConverter);
   var fromStr = Cc["@mozilla.org/supports-string;1"]
                .createInstance(Ci.nsISupportsString);
   fromStr.data = aStr;
   var toStr = { value: null };
 
   try {
     formatConverter.convert("text/html", fromStr, fromStr.toString().length, "text/unicode", toStr, {});
   } catch(e) {
     return aStr;
   }
   if(toStr.value) {
     toStr = toStr.value.QueryInterface(Ci.nsISupportsString);
     return toStr.toString();
   }
   return aStr;
 }

# Re: Recuperer le contenu text du body

Envoyé par : papy

Date : 04/09/2007 13:28

gagalive a écrit:

j'ai essayé un test aveugle avec la propostion du
Treewalker, histoire de me faire une meilleure
idée du Treewalker: J'ai eu l'erreur suivante de
la console de FF.

Erreur: uncaught exception: [Exception... "Object
cannot be created in
this context" code: "9" nsresult: "0x80530009
(NS_ERROR_DOM_NOT_SUPPORTED_ERR)" location:
"chrome://MyApiName/content/global.js Line: 56"]

Hello,

le body que tu essais d'ouvrir est ta page principale ou est ce qu'il se trouve dans un browser/iframe/... ?

# Re: Recuperer le contenu text du body

Envoyé par : hhf

Date : 04/09/2007 20:44

Avec le treewalker ceci devrais marcher from scratch, non testé):

var texteAlEcran = "";
var tw = document.createTreeWalker(common, NodeFilter.SHOW_TEXT, 
         function(n) {return (n.length)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP;}, true);
var current = null;
while((c = tw.nextNode())!=null) {
   texteAlEcran+=c.nodeValue;
}
alert(texteAlEcran);

# Re: Recuperer le contenu text du body

Envoyé par : gagalive

Date : 05/09/2007 01:10

Merci encore pout toutes vos propositions. Malheuresement j'ai l'impression que je suis mal compris.Il ne s'agit pas de convertir un texte ou de recuperer le code html d'une page web. Sinon il s'agit d'extraire la partie textuaire d'une page web, rien que du texte qui est lu à l'ecran du browser par l'utilisateur. Un texte qui ne contient pas de code javascript,noscript,et autres... Ce qui est important pour moi c'est l'analyse d'une page web pour pouvoir extraire des informations très precises.

Aller à la page :  1 2

Il n'est plus possible de poster des messages dans ce forum.


Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.

Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™ sont des marques de la fondation Mozilla.