2010-05-29 48 views
0

我將在遠程頁面上有一個小部件。在小部件中,我想讓javascript或jquery從網頁中獲取所有文章內容並將其發送回我的網站。我只需要文章內容,而不是網頁上的所有其他信息。我希望腳本發送遠程網頁網址,頁面內容,標題文本和h1文本。我不想收到任何html標籤。這可能嗎?如何使用Javascript或JQuery獲取頁面內容

我製作的腳本就像谷歌的AdSense。 此外,我會使用c#作爲我的後端服務器

會是這樣的工作? http://blog.nparashuram.com/2009/08/screen-scraping-with-javascript-firebug.html

+2

這聽起來像你想要訪問不同的域上的頁面,是這種情況? – 2010-05-29 01:26:32

+0

是的..這是正確的 – Luke101 2010-05-29 01:55:31

+0

只是想提及在谷歌上搜索這個主題時使用的關鍵字是「頁面刮擦」。如下所述,您不能跨域執行此操作,因此您需要一些服務器代碼將其拉入,解析並以您選擇的格式吐出所需的數據。 – Zachary 2010-05-29 02:25:38

回答

2

我的建議,如果沒有太多的數據會使用燈塔。

var beac = new Image(); 
beac.onload = function() { 
    //do somethiringng on completion 
} 
beac.src = "youdomain/somthing.php?var=asdasd&key=someUniqueString"; 

這允許您發送適量的數據到另一個域上的服務器,前提是您不需要任何迴應。

+0

「假設你不需要任何東西」......我不想看起來很粗魯,但你看過這個問題嗎? – 2010-05-29 02:14:27

+0

是的,我只是說他希望將當前頁面的標題,h1和url發送回他的域名。 – Rixius 2010-05-29 02:18:13

+0

和文章內容,但是提到的所有轉移都是從當前頁面到他的頁面。 – Rixius 2010-05-29 02:19:26

1

總之,你不能這樣做,至少不會以你期望的方式。出於安全原因,有一個same-origin policy,可以防止您向另一個域發出請求。

您的最佳選擇是在您的服務器上執行此操作並向其發出請求。我無法說服你如何在服務器上執行此操作,因爲你的問題不包括你正在使用的框架,但假設它是PHP,那麼你會讓該頁面帶上一個URL,或者你想要的東西可以從中生成URL,然後返回包含您列出的屬性的JSON對象。 jQuery的部分將是這個樣子:

$("a").click(function() { 
    $.ajax({ 
    url: 'myPage.php', 
    data: { url: $(this).attr("href") }, 
    dataType: 'json', 
    success: function(data) { 
     //use the properties, data.url, data.content, data.title, etc... 
    } 
    }); 
}); 

或者,使用$.getJSON()短格式...

$.getJSON('myPage.php', { url: $(this).attr("href") }, function(data) { 
     //use the properties, data.url, data.content, data.title, etc... 
    }); 

以上所有沒有頂住,你最好的網址發送到您的服務器並且完全在服務器端完成,這將會減少工作量。如果您打算按照他們所看到的方式查看客戶的頁面,那麼這正是相同原產地策略可以預防的,例如,如果不是文章,而是他們的網上銀行?你可以看到爲什麼這是被禁止的:)

+0

會是這樣的工作? http://blog.nparashuram.com/2009/08/screen-scraping-with-javascript-firebug.html – Luke101 2010-05-29 02:49:47

+0

@Luke - 假設你仍然處於跨域界限之內(插件有更多的引導方式這裏)...但這仍然是*遠*更容易完成服務器端。 – 2010-05-29 10:50:55

+1

+1表示「相同來源政策」鏈接 – Raghav 2010-05-29 15:55:45

相關問題