2010-08-21 40 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()檢索所有新聞