2010-08-21 99 views
1

我想要做以下事情:从几个网站抓取新闻,使用jQuery选择器解析他们的内容,并在一个页面上显示它们。jQuery:从不同的网站获取/解析内容

这怎么可以用jQuery来完成?

谢谢。

+0

这将在很大程度上取决于关于这些网站如何暴露他们的数据。他们是否使用API​​?什么格式?协议?在您的问题变得可以回答之前,需要回答许多问题。 – 2010-08-21 14:41:02

回答

3

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

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

1

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

但在这里看到一个可能的解决方案:Cross site scripting(XSS)

+1

是的。异常:JSONP数据。对于其他任何事情,你需要某种服务器端代理脚本。 – 2010-08-21 14:40:31

1

除非你的消息是从网站,用于提取沿着你想要的线路内容明确的机制来了,你可以” t从客户端(即浏览器)执行此操作。但是,您可以从您的服务器获取内容,然后以您喜欢的原始状态将其交给客户端。

1

就javascript而言,除非使用API​​明确地共享内容,否则无法从其他页面获取内容。

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

注意:获取属于他人的内容 - 在未经他们同意的情况下操纵它并以自己的形式呈现就是引发麻烦的诱惑。

1

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

0

如果您试图抓取新闻的网站支持rss feed,那么您可以使用像jFeed这样的jQuery插件来检索rss,然后您可以将它显示在您自己的网站上。

虽然,我会建议你安装一个Web服务(在asp.net,PHP等)的收集RSS或刮你想要的网站的meta标签,然后用jquery.get()检索所有新闻