使用JQuery从另一个网站获取HTML:可能吗?法律?

时间:2011-12-14 08:01:54

标签: javascript jquery html cross-domain

我正在尝试从不在同一域中的网页获取HTML代码。 html文本被解析&总结了HTML代码所在页面上的食谱(食谱名称,主要成分,步骤号)。

然后,用户可以点击链接&转到域外的该网页查看配方。

我知道Same-Origin-Policy,但这是否适用于从国内域外的网页获取HTML代码?我想它与获取XML完全一样,所以这是合法的和允许不是吗?

我是否有办法从国内域名以外的域中获取HTML文本/代码?

使用Javascript& JQuery,其想法是限制服务器请求的数量和数量。通过让用户对每个食谱执行请求并进行存储。解析客户端的HTML。这会阻止服务器端瓶颈和也意味着我不必通过服务器&删除旧的过时食谱总结。

我愿意接受任何编程语言或API等的解决方案/建议。

5 个答案:

答案 0 :(得分:9)

使用任何AJAX库无法完成您要做的事情。浏览器的跨域策略不允许您这样做。

但是你可以结合使用php(或任何其他服务器端语言)和AJAX来实现这一点。像这样创建一个php脚本:

<?php
    $url=$_POST['url'];
    if($url!="")
        echo file_get_contents($url);
?>

让我们说脚本的名称是fetch.php。 现在,您可以将jQuery代码中的AJAX调用抛出到此fetch.php,它将为您提取HTML代码。

答案 1 :(得分:3)

不,这不适用于客户端JavaScript。出于安全原因,浏览器会阻止它。您需要对本地服务器端脚本(例如PHP)进行ajax调用,然后获取内容(例如,通过cURL)并返回所需的HTML。

答案 2 :(得分:2)

为了给你已经得到的答案添加一些内容,我可以告诉你html并不是用来像“服务”一样传输数据的方式。为此,通过XMLJSON公开SOAPREST

在您的方案中,我能够考虑的最佳方法是牢记技术和法律方面,使用iframe来显示外部内容并引用iframe内容的来源,包括像你一直在做的外部链接。

您仍然可以尝试使用服务器端方法来获取远程html,但不是一个干净的方法,这肯定不是一个好的做法,可能不合法。

如果内容的作者希望其可以在其网站之外重复使用,则他可以通过服务或RSS / Atom Feed提供无格式内容来表达此意图。

答案 3 :(得分:1)

同样的起源适用。尝试此代码,您将面临安全错误

$.get("other web page site", {}, function(content){
   $("#receipe").html(content)
}, "html")
顺便说一下,你更可能违反版权法,所以要小心; - )

答案 4 :(得分:0)

我不确定它是否算作纯粹的JavaScript解决方案,但是:http://developer.yahoo.com/yql/可以帮助您找到所需内容。