Wget 不會建立目錄的索引文件

Wget 不會建立目錄的索引文件

我正在嘗試使用命令下載網站:

wget -r -l 0 -p -k -m -e robots=off --restrict-file-names=nocontrol,unix http://example.com

當它找到連結時,例如 ,http://example.com/direction它會在磁碟上建立一個文件./example.com/direction

然後,例如,它在“direction”中找到一些其他文件(連結),假設http://example.com/direction/11

並用一些 HTMLwget重寫舊文件./example.com/direction,並將其轉換到目錄中。並在那裡寫入新文件./example.com/direction/11

如果它在裡面找到新文件/direction/11,那麼它也會重寫11並將其轉換到目錄中。

所以,看來我遺失了所有目錄索引檔。

wget本身的問題有解決方案嗎?

答案1

這可能並不適用於所有情況,但我能夠使用有點意想不到的標籤來解決這個問題。

來自 wget 1.17.1 手冊:

‘-E’

‘--adjust-extension’

‘application/xhtml+xml’如果下載了or類型的檔案‘text/html’且 URL 不以 regexp 結尾‘\.[Hh][Tt][Mm][Ll]?’,則此選項將導致後綴‘.html’附加到本機檔案名稱。

因此,在您的情況下,當 wget 找到 link 時http://example.com/direction,它將檢查該頁面是否為 html 格式。如果有,它會將其保存到本機磁碟/example.com/direction.html。然後,當它看到 時http://example.com/direction/11,會將其儲存到磁碟上/example.com/direction/11,從而不會覆蓋第一個檔案。假設真實的目錄結構是/example.com/direction/index.html,它不會完全符合遠端目錄結構,但至少不會錯誤地覆蓋檔案。

答案2

嗯,僅使用 Wget 來解決這個問題幾乎是不可能的。讓我先試著向您解釋一下這個問題。

首先 Wget 嘗試下載http://site.com/direction.當 Wget 發送對此路徑的請求時,伺服器會使用 中可用的資料回應http://site/com/example/index.html。然而,此時,Wget 並不知道發送給它的資料對應於路徑:example/index.html。現在,當 Wget 找到另一個檔案 時,http://site.com/example/11同樣的事情會再次發生。但是,它必須先建立目錄 example/ 並無條件刪除舊檔案才能執行此操作。 IMO,Wget 應該檢測是否用目錄替換檔案並將該檔案儲存為索引檔案。但是,到目前為止還沒有。

相關內容