Wildcards

wget遞歸文件沒有副檔名

  • April 17, 2019

我正在嘗試使用wget. 問題在於它:

  1. 為頁面設置使用者友好的名稱
http://domain/wiki/Section/Home, 
http://domain/wiki/Section/Not+Home
http://domain/wiki/Section/Other+page
  1. 對於某些頁面,它使用查詢字元串:
http://domain/wiki/Section/Home?one=value&other=value
  1. 並且由於某種原因,可能備份某些文件的副檔名為*.1*(從 1 到 n 的數字),例如styles.css.1javascrip.js.2

我想進行遞歸下載並將其儲存在一個文件夾中,但避免使用帶有查詢的文件;Home?query– 在這種情況下Home。為此,我嘗試--reject了一種模式,但無法使其發揮作用。

.1,.2,... .n如果我添加一長串數字,我可以避免擴展,但希望有更好的方法。

這是wget

wget \
--page-requisites \
--no-parent \
--no-host-directories \
--no-directories \
--convert-links \
--load-cookies wget_cookies.txt --cookies=on --keep-session-cookies \
-P WikiFolders/pages/ \
-e robots=off \
-r \
--reject='1,2,3,4,5,6,7,8,9,*\\?*' \
--content-disposition \
--no-check-certificate \
http://domain/wiki/Section/

如果我以這種方式執行它,我確實會獲得該網站,但對於某些內容來說真的很慢。

注意:為了避免帶有我嘗試過的查詢的文件,*\\?*但這不起作用。

下載後,我刪除了以下內容:

find WikiFolders/pages/ -iname "*\\?*" -delete

但同樣這真的很慢,我必須下載很多內容。

我考慮過首先排除HTML和下載圖像、CSS 和 js 以及其他 wget HTML,但由於文件沒有副檔名,這不起作用。

您可以使用[]符號來指定數字和字母的範圍。重複多次。

*[0-9],*[0-9][0-9],*[0-9][0-9][0-9]
|____||__________||_______________|
  |       |              |
  |       |              +---------- Reject ending with 000 to 999
  |       +------------------------- Reject ending with 00 to 99
  +--------------------------------- Reject ending with 0 to 9

這也可以與--accept.

對於查詢連結,無法將其過濾掉 - 但是,如果您指定 *\?*文件將在下載後被刪除。因此,您將不得不使用頻寬和下載時間來忍受它,但之後您不必進行清理。

所以,總結總結,也許是這樣的:

--reject='*.[0-9],*.[0-9][0-9],*\?*'

如果這還不夠,您將不得不查看其他工具,例如您的問題下可能的重複連結中提到的工具。

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