我想完全鏡像以下網站:http://tinaztitiz.com
我使用以下 wget 命令:
wget -m http://tinaztitiz.com
網站是一個自訂 CMS,包含許多具有以下網址形式的頁面:
http://tinaztitiz.com/yazi.php?id=943
http://tinaztitiz.com/yazi.php?id=762
奇怪的是,wget 取得了其中一些頁面,但不是全部。我想知道這可能是什麼原因?
注意:robots.txt 沒有任何限制。
更新:
查看網站的源代碼,我注意到wget未檢測到和爬行的頁面有一個共同的屬性。它們的錨點 url 由以下 javascript 函數編寫:
function yazilar()
{
var ab = '</a><br class=\"hide\" />';
var aa = '<a class=' + '\"nav sub\" href=\"kategori.php?id=';
var ac = '';
var arr = new Array();
arr[0] = '12\">'+ac+' Belâgat';
arr[1] = '15\">'+ac+' Bilim ve Teknoloji';
//...
maxi = 14;
for(i=0;i<maxi;i++) {
a = aa + arr[i] + ab;
document.writeln(a);
}
}
因此,看起來 wget 無法偵測動態產生的錨標記。
答案1
Javascript 由瀏覽器呈現。wget
完全執行其應該執行的操作:取得內容。瀏覽器最初也會做同樣的事情。他們完全按照您在上面發布的方式獲取內容。但隨後它會渲染該Javascript
部件並建立連結。wget
不能那樣做。所以,不,您無法僅使用 wget 來獲取動態生成的連結。你可以嘗試類似的東西PhantomJS儘管。