2017-04-11 55 views
0

我需要在一个跨度内,在一个div内,在一个div内,在另一个网站(跨域)中找到文本
经过数小时和数小时的研究,我仍然无法获得任何工作。截至目前,这是我有:如何从使用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> 

我很新jQuery的,所以请原谅我,如果我的方式偏离了轨道。任何帮助都非常感谢。

此外,有没有什么办法可以指定“指定元素之后的元素”?我需要在此之后获取元素的内容,但它不是唯一的。

如果需要的话,该网站是http://landnstemacademy.blogspot.com/

编辑:我相信我可能已经读过的地方,某种涉及JSON方法可以避开这些“反跨域”的规则。在这里工作?可以得到文本吗?我还想指出,如果所有可能的,我想约束所有的代码到一个文件(没有额外的文件文件的PHP),但我明白,如果这使得它太难/不可能出于任何原因。再次感谢你。

+0

如果域不设置,则不能允许跨源策略。更多https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS –

+0

您可以通过改变现有的代码,将通过一个特殊的CORS代理请求,而不是发送请求绕过CORS限制直接到网站(如你的代码现在所做的那样)。有使用'$获得(...)相关的代码示例'在https://stackoverflow.com/questions/43314070/google-news-api-gives-an-error-uncaught-syntaxerror-unexpected-token/43314425#43314425另请参阅https:// stackoverflow。com/questions/20035101/no-access-control-allow-origin-header-is-present-on-the-requested-resource/42744707#42744707更多详情 – sideshowbarker

回答

0

由于跨源资源共享CORS机制,您不允许从您的域访问网站内容。

这种机制在那里形成一些安全原因来防止攻击,如clickjacking

如果您尝试运行你的要求,你会得到下面的错误,所以你的问题是不是摆在首位的jQuery。

XMLHttpRequest无法加载http://landnstemacademy.blogspot.com/。否 “访问控制 - 允许来源”标题出现在请求的 资源中。因此不允许原产地'null'访问。

然后只有当您试图从中获取数据的网站允许跨网站访问时,使用Access-Control-Allow-Origin: * http标头提供您的请求响应时,您只能访问此数据。

+0

如果我要创建一个blogspot页面(因为页面我试图访问的是一个blogspot页面),将html代码添加到我的页面,然后在我的原始网站中创建blogspot页面的iframe? –

+0

这属于同一范围内的老兄,它也会阻止你出于同样的原因。 – KAD

+0

好的拍摄...在这一点上好吧,我可以做的唯一事情就是询问该网站的编辑是否可以添加一个页面到他们的blogspot网站,其中包含$ .get代码,然后在我的网站上创建一个iframe结束,对吧?这可能有用吗?我不愿意为你拖延这一点,但不管信不信,让这个工作能够在一年中为我节省很多时间(最终还有许多人)。 –

0

您可以使用这样的事情:

的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; 

注:不允许您从您的域名访问网站内容由于跨源资源共享CORS机制。所以ajax()单独是不足以执行您的任务,您必须使用CURL

相关问题