【问题标题】:jQuery: getting/parsing content from different sitesjQuery:从不同站点获取/解析内容
【发布时间】:2010-08-21 14:37:01
【问题描述】:

我想做以下事情:从多个站点获取新闻,使用 jQuery 选择器解析它们的内容并在一页上显示它们。

如何用 jQuery 做到这一点?

谢谢。

【问题讨论】:

  • 这在很大程度上取决于这些网站如何公开他们的数据。他们使用 API 吗?什么格式?协议?在您的问题得到回答之前需要回答许多问题。

标签: jquery html-content-extraction


【解决方案1】:

出于安全原因,JavaScript(以及 jQuery)AJAX 方法只能从与您的站点位于同一域的 URL 中检索数据。

不过有一些变通方法。您可以使用服务器端脚本为您下载远程内容 - 将其视为代理。或者,您可以查看JSONP,但远程站点需要提供它。

【讨论】:

    【解决方案2】:

    它不能使用纯 jQuery 或 JavaScript,因为您无法从与运行脚本的域不同的域中获取内容。这是防止Cross Site Scripting的安全措施

    但请在此处查看可能的解决方案:Cross site scripting(XSS)

    【讨论】:

    • 是的。例外:JSONP 数据。对于其他任何事情,您都需要某种服务器端代理脚本。
    【解决方案3】:

    除非您的新闻来自明确提供按照您想要的内容获取内容的机制的网站,否则您无法从客户端(即浏览器)执行此操作。但是,您可以从 服务器 获取内容,然后以您喜欢的原始状态将其交给您的客户端。

    【讨论】:

      【解决方案4】:

      就 javascript 而言,您无法从其他页面获取内容,除非他们使用 API 明确共享这些内容。

      您可以做的是在服务器端使用cURL 从其他网站获取数据,然后在服务器端进行操作并提供服务。

      注意:获取属于他人的内容 - 在未经他们同意的情况下对其进行操作并呈现为您自己的内容是自找麻烦。

      【讨论】:

        【解决方案5】:

        与其他回复相反,脚本块源不会被阻止跨域访问,因此,如果您将脚本块动态添加到页面的标题并将站点的结果输出创建为回调(将其包装在基本上是函数调用,并在您自己的代码中处理 taht 函数)然后您可以访问其他域上的内容 - 另一方面是您需要站点在回调中向您呈现数据,否则它不起作用。

        【讨论】:

          【解决方案6】:

          如果您尝试从支持 rss feed 的网站获取新闻,那么您可以使用 jFeed 等 jquery 插件来检索 rss,然后您可以将其显示在您自己的网站上。

          不过,我建议您设置一个网络服务(在 asp.net、php 等中),在您想要的网站中收集 rss 或抓取元标记,然后使用 jquery.get() 检索所有新闻

          【讨论】:

            猜你喜欢
            • 2011-09-21
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-07-11
            • 1970-01-01
            • 2015-09-17
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多