【问题标题】:How do I get specified text from another website using jquery?如何使用 jquery 从另一个网站获取指定的文本?
【发布时间】:2017-09-06 07:42:30
【问题描述】:

我需要在另一个网站(跨域)的跨度、div、div 等中找到文本
经过数小时的研究,我仍然无法得到任何工作。截至目前,这就是我所拥有的:

<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 的额外文件文件),但我知道这是否会因为任何原因而变得太困难/不可能。再次感谢。

【问题讨论】:

标签: javascript jquery html ajax cross-domain


【解决方案1】:

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

这种机制存在一些安全原因来防止攻击,例如clickjacking

如果您尝试运行您的请求,您将收到以下错误,因此您的问题首先不是 jquery。

XMLHttpRequest 无法加载 http://landnstemacademy.blogspot.com/。不 请求中存在“Access-Control-Allow-Origin”标头 资源。因此不允许访问 Origin 'null'。

那么,您可以访问此数据的唯一方法是,如果您尝试从中获取数据的站点在使用 Access-Control-Allow-Origin: * http 标头响应您的请求时允许跨源访问。

【讨论】:

  • 如果我要创建一个 blogspot 页面(因为我试图访问的页面是 blogspot 页面),将 html 代码添加到我的页面,然后在我的原始网站?
  • 这在同一个范围内,它也会出于同样的原因阻止你。
  • 好吧...好吧,在这一点上,我唯一能做的就是询问该网站的编辑是否可以在其中添加一个带有 $.get 代码的页面到他们的 blogspot 网站,然后在我这边创建一个 iframe,对吗?那可能会起作用吗?我不想继续为你拖延这个,但不管你信不信,让这个工作会在一年中为我(以及最终其他许多人)节省很多时间。
  • 检查站点所有者是否提供任何 API 以便与站点应用程序通信并通过 Web 服务获取数据
【解决方案2】:

你可以这样使用:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-22
    • 2016-09-14
    • 2018-10-16
    • 2014-03-11
    • 1970-01-01
    • 1970-01-01
    • 2019-04-22
    相关资源
    最近更新 更多