6
votes

Est-il possible de lire une autre structure DOM d'URL?

modifier évidemment qu'il serait hors de question.

Mais vous penseriez simplement à lire ne devrait pas être un problème?

Si j'ai mon fichier .js en cours d'exécution sur le système de quelqu'un et que je veux analyser le DOM d'une autre URL, côté client, y a-t-il un moyen de faire cela?

Quelque chose de simple, comme Tirez la balise de titre ou tirez l'URL ... peut-être charger le site dans un iframe pour accomplir cela?


9 commentaires

Si vous demandez si vous pouvez inspecter la DOM d'un document dans une autre origine, alors non. Cela permettrait de voler des données utilisateur sous forme ou de servir simplement dans le texte.


La même politique d'origine vous empêche de faire cela. Vous pouvez consulter Stackoverflow.com/questions/3076414


Pourquoi voulez-vous faire cela à partir d'un client Web au lieu d'un programme Serverside comme un robot / bot?


Vous voulez analyser une page par JavaScript (je veux dire voir le HTML de celui-ci?)


document.getelmentByID (). contentwindow.document pour ledit iframe ... Je vais comprendre la syntaxe plus tard.


@ Cs_2013: document.getelementByID ('myiframe'). Contentwindow.document . Il a été supprimé car cela ne fonctionnera pas si l'IFrame est d'un domaine différent de votre page.


@Mic - Merci d'avoir un peu d'espoir maintenant.


@ Cs_2013, voir ma réponse ci-dessous


@Mic - Ces méthodes nécessitent-elles le contrôle de l'autre domaine?


4 Réponses :


1
votes

Si les domaines ne correspondent pas, vous ne pourrez pas le faire en raison d'une exception de sécurité. Si toutefois vous contrôlez l'autre domaine, vous devez rechercher un fichier de domaine croisé pour permettre l'accès via JavaScript.


1 commentaires

@Stevebinder: il a été supprimé.



1
votes

Vous pouvez obtenir la source HTML avec une demande AJAX GET. Une fois que vous pouvez rechercher dans le code HTML ou l'attribuer à un iframe /...


1 commentaires

Pas si l'URL provient d'un autre domaine.



4
votes

Si je reçois votre question,

Un exemple de domaine croisé en utilisant YQL, P>

var url = 'xyz.com'; // website you want to scrape
var yql = 'http://query.yahooapis.com/v1/public/yql?q=' + encodeURIComponent('select * from html where url="' + url + '"') + '&format=json&callback=?';  
$.getJSON(yql,function(data){
    if (data.results[0]){  
        console.log(data = data.results[0].replace(/<script[^>]*>[\s\S]*?<\/script>/gi, ''));  // The scraped data (the whole webpage)
    }
});


7 commentaires

Yahoo Query Language ... Je suis Googled Out ..Can tu me donnes un bref synopsis?


une sorte d'API Yahoo qui fait l'analyse pour vous?


Cela fait beaucoup de choses. Vous obtiendrez tout ici . Qu'est-ce que ça fait, comment ça fait, comment le faire et plus encore?


Il agit comme un proxy. Étant donné qu'un serveur peut analyser n'importe quelle page, il peut ... et ensuite il vous renvoie en tant que JSONP . Étant donné que JSONP est cross-domaine, vous pouvez l'utiliser à partir de n'importe quel domaine :)


Je ne veux pas frapper un autre serveur, bien que cela semble cool il y a environ 3 façons différentes de le faire mentionné dans le commentaire par MIC.


Je dis donc à éviter la discussion. Marquez comme réponse si ma réponse vous a aidé :)


En fait ... les voies ci-dessus exigent un accès à une seconde origine ... votre chemin exige ... 3ème partie.



10
votes

Vous pouvez le faire en utilisant xmlhttp xxx


0 commentaires