2012-09-21 84 views
0

我知道這裏有幾個屏幕抓取線程,但沒有一個答案讓我滿意。使用Ruby屏幕抓取和代理

我想從外部網頁使用JavaScript刮HTML。我使用$ .ajax,一切都應該正常工作。這裏是我的代碼:

$.ajax({ 
    url: "my.url/path", 
    dataType: 'text', 
    success: function(data) { 
     var myVar = $.get(url); 
     alert(myVar); 
    } 
}); 

唯一的問題是,它正在我的web服務器中查找指定的URL。如何使用代理訪問外部網頁?

+0

這取決於你所使用的服務器和您要使用的服務器端語言的類型。 –

+0

我爲服務器使用嵌入式紅寶石 – imnotfred

+0

我編輯了標題,以便獲得更合適的讀者。 –

回答

0

由於跨站點腳本的限制,您將不得不將所需的URL傳遞到服務器上的一個頁面,該頁面將從服務器端查詢有問題的URL,然後將結果返回給您。看看下面的線程,並將它合併到你的應用程序中,並讓它在你的AJAX函數擊中該頁面時返回源代碼。

How to get the HTML source of a webpage in Ruby

使用GET請求,要到是最簡單的方式傳遞你想獲取服務器的網頁的URL,這樣你就可以調用類似:

$.ajax("fetchPage.rb" + encodeURI(http://www.google.com)) 

由於您無法直接從服務器訪問有問題的一方,因此您將不得不通過代理服務器來傳輸服務器端腳本,以使請求生效,這取決於您的設置。在Ruby中考慮看看Proxy類:

http://ruby-doc.org/stdlib-1.9.3/libdoc/net/http/rdoc/Net/HTTP.html#method-c-Proxy