2013-05-14 72 views
0

使用http://curl.haxx.se/programs/curlmirror.txt,我正在尋找下載一個網站,並檢查新下載的網站和我之前下載的網站之間的變化。然而,當我下載相同的網站時,有時候網站上的鏈接使用相對路徑,有時它們使用絕對路徑,即使網站沒有改變,這也算作「改變」。使用curlmirror.pl給出不同的輸出

Usage: curlmirror.pl -l -d 3 -o someOutputFileDirectory/url http://url 

Output 1: <td><a href="testing.htm">LINK</a></td> 
Output 2: <td><a href="http://mydomain.com/testing.htm">LINK</a></td> 

有沒有辦法將所有相對路徑轉換爲絕對路徑或其他方式?我只是需要讓這些鏈接不顯示爲「變更」

回答

0

修訂

我假設網址放置到$url變量規範下載。那麼你可以嘗試像波紋管:

perl -pe 'BEGIN {$url="http://somedomain.org"} 
s!(\b(?:url|href)=")([^/]+)(")!$1$url/$2$3!gi' << XXX 
<td><a href="testing.htm">LINK</a></td> 
<td><a href="http://mydomain.com/testing.htm">LINK</a></td> 
<meta http-equiv="Refresh" content="0;URL="home"> 
XXX 

輸出:

<td><a href="http://mymain.org/testing.htm">LINK</a></td> 
<td><a href="http://mydomain.com/testing.htm">LINK</a></td> 
<meta http-equiv="Refresh" content="0;URL="http://mymain.org/home"> 

它替換href="$url/..."url="$url/..."所有href="..."url="..."(不區分大小寫)模式如果不...包含/字符。

如果輸入的是一個文件,可以直接替換文件中的這些模式:

cat >tfile << XXX 
<td><a href="testing.htm">LINK</a></td> 
<td><a href="http://mydomain.com/testing.htm">LINK</a></td> 
<meta http-equiv="Refresh" content="0;URL="home"> 
XXX 

cat tfile 
perl -i -pe 'BEGIN {$url="http://mymain.org"} 
s!(\b(?:url|href)=")([^/]+)(")!$1$url/$2$3!gi' tfile 
echo "---" 
cat tfile 

輸出:

<td><a href="testing.htm">LINK</a></td> 
<td><a href="http://mydomain.com/testing.htm">LINK</a></td> 
<meta http-equiv="Refresh" content="0;URL="home"> 
--- 
<td><a href="http://mymain.org/testing.htm">LINK</a></td> 
<td><a href="http://mydomain.com/testing.htm">LINK</a></td> 
<meta http-equiv="Refresh" content="0;URL="http://mymain.org/home"> 
+0

謝謝您的回答,但它並沒有真正解決問題。 curlmirror.pl將html下載爲文本,而不僅僅是標籤,其他鏈接如成爲。我需要一種方法讓curlmirror將所有鏈接下載爲絕對路徑或相對路徑 – Zetsukaze 2013-05-15 01:04:57