Wget

有沒有辦法禁止 wget 從父目錄獲取文件到給定深度?

  • June 17, 2016

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.

引用自:https://unix.stackexchange.com/questions/26890