2017-04-11 1 views
0

J'ai besoin de trouver du texte dans un span, dans un div, dans un div, etc. dans un autre site (cross-domain)
Après des heures et des heures de recherche, je n'ai toujours pas réussi à faire quoi que ce soit au travail . En ce moment, voici ce que j'ai:Comment obtenir du texte spécifié à partir d'un autre site Web à l'aide de jquery?

<head> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script> 
</head> 
<body> 
    <div id="thisdiv"></div> 
    <script> 
     $.get("http://landnstemacademy.blogspot.com/", function(data) { 
     $("#Blog1") 
     $("span:contains('Quote of the day')") 
      .contents() 
       .filter(function(){ 
        return this.nodeType !== 3; 
       }) 
      .clone().prependTo("#thisdiv"); 
     } 
    </script> 
</body> 

Je suis très nouveau pour jquery, alors s'il vous plaît excusez-moi si je suis bien sur la bonne voie. Toute aide est très appréciée.

De même, est-il possible de spécifier "un élément après un élément spécifié"? J'ai besoin d'obtenir le contenu d'un élément après celui-ci, mais ce n'est pas aussi unique.

Si nécessaire, le site est http://landnstemacademy.blogspot.com/

EDIT: Je crois que je l'ai lu quelque part que une sorte de méthode impliquant JSON peut contourner ces règles « anti-cross-domain ». Cela fonctionnerait-il ici? Est-ce que ça peut avoir du texte? Je tiens également à noter que si tout est possible, je voudrais contraindre tout le code à un fichier (pas de fichiers de fichiers supplémentaires pour php), mais je comprends si cela le rend trop difficile/impossible pour une raison quelconque. Merci encore.

+0

Vous ne pouvez pas si le domaine ne définit pas Autorise la stratégie d'origine croisée. En savoir plus https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS –

+0

Vous pouvez contourner la restriction CORS en modifiant votre code existant pour envoyer la requête via un proxy CORS spécial au lieu d'envoyer la requête directement sur le site (comme le fait votre code maintenant). Il y a un exemple de code qui utilise $ .get (...) 'sur https://stackoverflow.com/questions/43314070/google-news-api-gives-an-error-uncaught-syntaxerror-unexpected-token/43314425#43314425 Et voir aussi https: // stackoverflow.com/questions/20035101/no-access-control-autoriser-origin-header-is-present-on-the-requested-resource/42744707 # 42744707 pour plus de détails – sideshowbarker

Répondre

0

Vous n'êtes pas autorisé à accéder au contenu du site de votre domaine en raison du mécanisme de partage des ressources d'origine croisée CORS.

Ce mécanisme est là pour des raisons de sécurité pour empêcher les attaques telles que clickjacking.

Si vous essayez d'exécuter votre demande, vous obtiendrez l'erreur ci-dessous, donc votre problème n'est pas avec jquery en premier lieu.

XMLHttpRequest ne peut pas charger http://landnstemacademy.blogspot.com/. Non L'en-tête 'Access-Control-Allow-Origin' est présent sur la ressource demandée. L'origine 'null' n'est donc pas autorisée.

chemin Alors seulement vous pouvez accéder à ces données est si le site que vous essayez d'obtenir des données permet d'accéder à partir d'origine croisée au moment de servir la réponse de votre demande en utilisant le Access-Control-Allow-Origin: * en-tête http.

+0

Et si je devais créer une page blogspot (depuis la page J'essaie d'accéder est une page blogspot), ajouter du code html à ma page, puis créer un iframe de la page blogspot dans mon site d'origine? –

+0

Cela se situe sous la même portée mec, il vous empêchera également pour la même raison. – KAD

+0

Bien tirer ... Bon à ce stade, probablement la seule chose que je pourrais faire est de demander à l'éditeur de ce site si ils pourraient ajouter ajouter une page à leur site blogspot avec le code $ .get, PUIS créer un iframe sur mon fin, n'est-ce pas? Cela pourrait-il potentiellement fonctionner? Je déteste continuer à traîner ça pour vous, mais croyez-le ou non, le faire fonctionner me sauvera (et finalement beaucoup d'autres) tellement de temps tout au long de l'année. –

0

Vous pouvez utiliser quelque chose comme ceci:

Jquery:

$.ajax({ 
    url  : 'ajax/get_random_quotes.php', 
    method : 'get', 
    success : function(response) 
    { 
     var data = JSON.parse(response); 
     // You can use response like data.col1 or data.col2 
    } 
}); 

Php: get_random_quotes.php

$url = "http://quotes.stormconsultancy.co.uk/random.json"; 
$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$response = curl_exec($ch); 
curl_close($ch); 
echo $response; 
exit; 

Note: Vous n'êtes pas autorisé à accéder au contenu du site de votre domaine en raison du mécanisme CORS de partage de ressources d'origine croisée. Donc ajax() seul n'est pas suffisant pour faire votre tâche, vous devez utiliser CURL