[JavaScript] Lire code html d'une page web

Bonjour,

j'ai un fichier index.html, un autre js.js et j'aimerais pouvoir lire le code html d'une page web au hasard (pas au hasard mais lire une page différente de mon index.html).

Merci

8 réponses

Résumé de la discussion

Des utilisateurs veulent lire le code HTML d'une page externe depuis index.html en utilisant JavaScript, sans se limiter à afficher le code local, sous Linux et Firefox 10.0.2. Plusieurs pistes techniques reviennent, notamment l'usage de PhantomJS pour accéder au contenu, l'inclusion d'un script PHP ou l'affichage d'une page via iframe afin d'obtenir le code HTML sans l'exécuter. D'autres évoquent des solutions liées à jQuery ou à la manipulation côté serveur, et certains suggèrent d'inclure le fichier JS dans une page externe pour afficher le résultat, tout en abordant des considérations légales. En cas de détail pratique, certains répondants précisent l'existence d'un exemple montrant des fichiers nommés index.htm et js.js, et la discussion évoque aussi d'autres méthodes d'accès au code HTML.

Bobot (l’IA à votre service)
  1. J'ai regardé au niveau de phantomjs mais je n'y comprends pas grand chose !
    j'ai ceci :
        var page = require('webpage').create(); 
    console.log('The default user agent is ' + page.settings.userAgent); 
    page.settings.userAgent = 'SpecialAgent'; 
    page.open('http://www.httpuseragent.org', function (status) { 
        if (status !== 'success') { 
            console.log('Unable to access network'); 
        } else { 
            var ua = page.evaluate(function () { 
                return document.getElementById('myagent').innerText; 
            }); 
            console.log(ua); 
            alert("z"); 
        } 
        phantom.exit(); 
    });

    mais il faut surement inclure des .js en plus, non ?
    1. il suffit d'inclure ton fichier javascript dans une autre page et d'afficher cette page
      1. Contributeur
        Hello,

        A essayer : inclure cette 2e page dans une iFrame cachée (mais néanmoins existante) puis lire son contenu avec :

        document.frames[0].document.body.innerHTML
        1. Contributeur
          Ca obligerait de charger autant d'iframes que de pages :$ Ca va revenir long cette histoire...
        2. Contributeur
          Oui enfin je pense que la méthode qu'il cherche à mettre en place n'est pas un exemple de performance !
      2. en faite tu voudrais afficher au hasard une page différente de ton index.html a l'intérieur même de ton index.html ?
        1. Merci pour vos réponses !
          vordano : non => je veux, par exemple, récupérer le code html de https://www.google.fr/?gws_rd=ssl et pouvoir y lire ce qui m'intéresse !
          Mihawk : merci beaucoup, je teste tout de suite !
          AssassinTourist : "lire" en tant que récupérer le code et non, je n'ai qu'une seule page à lire =D

          Merci encore ^^ je teste
          1. et bien c'est du php, alors que pour ma part, je ne peux le faire qu'en javascript !
            merci quand même ^^
          2. tu peux chercher du coté du jquery si tu veux faire un site sans rafraichissement
          3. pourquoi parles-tu de rafraichissement ? rafraichissement ou pas, ca n'est pas mon problème ^^
        2. J'ai essayé, mais j'ai une erreur !
          code html :
          <body onload="get();"> 
              <div id="div" style="border:1px solid black;height:200px;width:800px;"></div> 
              <iframe id="frame" src="http://www.site.eu/index.php" width=600 height=200 scrolling=auto frameborder=1 > 
              </iframe> 
          </body>

          code javascript :
          function get() 
          { 
          var myf = document.getElementById("frame"); 
          myf = myf.contentWindow.document || myf.contentDocument; 
          document.getElementById('div').innerHTML = myf.innerHTML; 
          }


          Je veux donc que le code s'affiche dans div !
          Mon erreur est celle-ci : Permission denied to access property 'document'.
          1. déjà tu as fait une erreur, ta fonction get() est exécuté avant que l'iframe ne soit affiché
            de plus personnellement je trouve cette méthode horrible
          2. ok j'appelle get() a la fin ^^ et maintenant, il me met "undefined" dans div !
          3. Contributeur
            L'erreur te dit que tu n'as pas les permissions nécessaires pour voir (je pense que c'est plutôt exécuter...) le fichier donné. Vu ce que tu as mis dans ton src, tu ne testes pas en local ? Est-ce que tu pourrais visualiser les droits de tes dossiers et sous-dossiers ?
          4. j'ai juste index.htm et js.js qui servent à récupérer le code html du site (pas en local en effet)...
          5. -rw-rw-r-- 1 blabla blabla 429 2012-02-27 15:33 index.htm
            -rw-rw-r-- 1 blabla blabla 608 2012-02-27 15:35 js.js
        3. Contributeur
          Hé, la page dont tu veux récupérer le HTML, elle est à toi ou sur un autre site ?!
          1. sur un site qui ne m'appartient pas...
          2. Contributeur
            Ahaha alors ton JS n'a certainement aucun droit dessus !
            Question de sécurité :)
          3. Contributeur
            Ah oui ! =)
            Je pensais que c'était une page à toi que tu appelais... mais oui, un autre site web ne donne pas accès à d'autres de ses pages
          4. donc, il n'y a aucun moyen ? je veux juste faire comme si je regarde le code source de la page en question !
          5. Contributeur
            Regarder le code source ? Le code html par exemple ?