2014-09-24 228 views
0

我在抓取一個外部網頁以保存在文件中,但有時候這個文件包含了我無法查看的相關網址,因爲這些文件不會被找到。我想通過絕對網址來取代。我對某些模塊或函數感興趣,它們將html字符串中的所有相關url都替換爲絕對值。任何想法?用絕對網址替換html中的相關網址

var request = require('request'); 
var WEBSITE = 'http://somewebsite.com/'; 
request.get(WEBSITE, function(error, response, body){ 
    body = replace_all_relative_by_absolute(body); 
    console.log(body); 
}); 
+0

Web應用程序應該爲它在 – 2014-09-24 03:27:59

+0

沒有運行,也許你不明白的領域幾乎完全無知。我想要報廢的內容,但我需要保存這個絕對的網址,因爲這個存儲的HTML文件不會顯示良好,當我打開。 – user1710825 2014-09-24 03:39:24

回答

0

您可以迭代鏈接並自行添加域。

使用jQuery,安裝有:

npm install -S '[email protected]>=2.1' 
npm install -S '[email protected]' 

實施例實現(勉強測試):

var env = require('jsdom').env; 

function addDomainToLinks(domain, html, callback) { 
    env(html, function (err, window) { 
    var $ = require('jquery')(window); 
    $.each($('a'), function(i, v) { 
     var href = $(v).attr('href'); 
     // Match links starting with /, but not // 
     // You probably want to do handle './', and do the same for images, etc. 
     if (href.match(/^\/[^\/]/)) { 
     $(v).attr('href', domain + href); 
     } 
    }); 
    callback($('html')[0].outerHTML); 
    }); 
} 

用法:

addDomainToLinks('http://example.com', html, function(html) { 
    console.log(html); 
}); 
+0

這不行。有時候有「./」,有時有「../」,「../../」等等... url nodejs模塊有我們可以使用的解析方法,但是我需要找到所有絕對和相對的url文件(HTML,CSS,JS),也許與正則表達式。 – user1710825 2014-09-24 14:34:55

+0

@ user1710825是的,這就是爲什麼我寫了一條評論,說你需要實現它,這只是一個例子。我不知道任何可以自動爲你做的軟件包。 – 2014-09-24 16:53:02

0

進口此

from urlparse import urljoin 

然後

urljoin(base_url, file_url) 
+0

但這就像url.resolve,我需要找到所有的URL(內部的html,css和js),以後我們可以迭代。 – user1710825 2014-09-27 10:18:34

+0

這是Python大聲笑。 :-P – Vinay 2016-05-18 19:53:31