Wget

Wget:選擇性地和遞歸地下載文件?

  • September 22, 2018

關於wget、子文件夾和 index.html 的問題。

假設我在“travels/”文件夾中,它在“website.com”中:“website.com/travels/”。

文件夾“travels/”包含很多文件和其他(子)文件夾:“website.com/travels/list.doc”、“website.com/travels/cover.png”、“website.com/travels/

$$ 1990 $$美國/" , “website.com/travels/$$ 1994 $$日本/”等等…… 如何僅下載所有子文件夾中的所有“.mov”和“.jpg”?我不想從“travels/”中選擇文件(例如,不是“website.com/travels/list.doc”)

我找到了一個wget命令(在 Unix&Linux Exchange 上,我不記得討論了什麼)能夠從子文件夾下載它們的“index.html”,而不是其他內容。為什麼只下載索引文件?

此命令將僅從給定網站下載圖像和電影:

wget -nd -r -P /save/location -A jpeg,jpg,bmp,gif,png,mov "http://www.somedomain.com"

根據wget man

-nd prevents the creation of a directory hierarchy (i.e. no directories).

-r enables recursive retrieval. See Recursive Download for more information.

-P sets the directory prefix where all files and directories are saved to.

-A sets a whitelist for retrieving only certain file types. Strings and patterns are accepted, and both can be used in a comma separated list (as seen above). See Types of Files for more information.

如果您想下載子文件夾,您需要使用 flag --no-parent,類似於以下命令:

wget -r -l1 --no-parent -P /save/location -A jpeg,jpg,bmp,gif,png,mov "http://www.somedomain.com"

-r: recursive retrieving
-l1: sets the maximum recursion depth to be 1
--no-parent: does not ascend to the parent; only downloads from the specified subdirectory and downwards hierarchy

關於 index.html 網頁。-A一旦命令中包含該標誌,它將被排除wget,因為該標誌將強制wget下載特定類型的文件,這意味著如果html不包含在要下載的已接受文件列表中(即標誌A),則不會下載並將wget在終端中輸出以下消息:

Removing /save/location/default.htm since it should be rejected.

wget當這些文件存在於提供的 URL 連結中時,可以下載特定類型的文件,例如(jpg、jpeg、png、mov、avi、mpeg、…等)wget,例如:

假設我們想從這個網站下載 .zip 和 .chd 文件

在此連結中有文件夾和 .zip 文件(滾動到最後)。現在,假設我們要執行這個命令:

wget -r --no-parent -P /save/location -A chd,zip "https://archive.org/download/MAME0.139_MAME2010_Reference_Set_ROMs_CHDs_Samples/roms/"

此命令將下載 .zip 文件,同時它會為 .chd 文件創建一個空文件夾。

為了下載 .chd 文件,我們需要提取空文件夾的名稱,然後將這些文件夾名稱轉換為其實際 URL。然後,將所有感興趣的 URL 放入一個文本文件file.txt中,最後將該文本文件饋送到wget,如下:

wget -r --no-parent -P /save/location -A chd,zip -i file.txt

前面的命令將找到所有 chd 文件。

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