有沒有辦法禁止 wget 從父目錄獲取文件到給定深度?
wget具有
-np
禁用從任何父目錄獲取文件的選項。我需要類似但更靈活的東西。考慮:www.foo.com/bar1/bar2/bar3/index.html
我想得到一切,但不是“更高”(在樹層次結構中)比
bar2
(!)。所以bar2
也應該被提取但不是bar1
。有沒有辦法讓 wget 更有選擇性?
背景:我正在嘗試鏡像一個具有類似邏輯結構的網站——起點,然後向上,然後向下。如果有比
wget
更適合這種佈局的工具,也請告訴我。更新
或者不是指定可能的深度,可能是“沒有父母,除非他們匹配這個或那個 URL”。
更新 2
伺服器上有一些結構,對吧?你可以把它想像成一棵樹。因此,通常使用“–no-parent”,您從某個點 A 開始,然後只向下走。
我的願望是能夠上去——通過說,它被允許上 X 個節點,或者(這是 100% 等效)它被允許上到 B 節點(其中距離 BA=X)。
在所有情況下,下降的規則都由使用者定義(例如——下降 Y 級)。
如何儲存?實際上這不是問題——
wget
預設情況下重新創建伺服器結構,這裡沒有什麼好害怕的,或者沒有必要修復任何東西。所以,用兩個詞——像往常一樣。更新 3
下面的目錄結構——讓我們假設在每個目錄中只有一個文件,在 R – R.html 等等。這當然是簡化的,因為您可以擁有多個頁面。
R / \ B G / \ C F / \ A D / E
A (A.html) 是我的起點,X = 2(所以 B 是我想要獲取的最頂層節點)。在這個特定範例中,這意味著獲取除 R.html 和 G.html 之外的所有頁面。A.html之所以稱為“起點”,是因為我必須從它開始,而不是從B開始。
更新 4
從更新 3 開始使用命名。
wget 選項 www.foo.com/B/C/A/A.html
問題是從目錄 B 及以下獲取所有頁面的選項是什麼(知道您必須從 A.html 開始)。
我還沒有嘗試過,但是使用 -I 和 -X 可以給你想要的東西。我的第一次嘗試將沿著
wget -m -I bar1/bar2 -X "*" http://www.foo.com/bar1/bar2/bar3/index.html
選項說明:
-m: --mirror Turn on options suitable for mirroring. This option turns on recursion and time-stamping, sets infinite recursion depth and keeps FTP directory listings. It is currently equivalent to -r -N -l inf --no-remove-listing. -I: list --include-directories=list Specify a comma-separated list of directories you wish to follow when downloading. Elements of list may contain wildcards. -X: list --exclude-directories=list Specify a comma-separated list of directories you wish to exclude from download. Elements of list may contain wildcards.