[No00006B]方便的網絡下載工具wget 可下載網站目錄下的所有文件(可下載整個網站)


wget是linux下命令行的下載工具,功能很強大,它能完成某些下載軟件所不能做的,比如如果你想下載一個網頁目錄下的所有文件,如何做呢?
網絡用戶有時候會遇到需要下載一批文件的情況,有時甚至需要把整個網站下載下來或者制作網站的鏡像。在Windows下的用戶都比較熟悉 Teleport,webzip等等網站下載工具,實際上AIX中也完全可以做到這樣的功能,那就是利用wget工具。wget是一個命令行工具,用來下載網絡文件或者整個網站,它具有自動重試、斷點續傳、支持代理服務器等等強大的功能。它可以完全替代ftp客戶端。wget是在Linux下開發的開放源代碼的軟件,作者是Hrvoje Niksic,后來被移植到包括Windows在內的各個平台上。
wget雖然功能強大,但是使用起來還是比較簡單的,基本的語法是:wget [參數列表] URL。下面就結合具體的例子來說明一下wget的用法。
1、下載整個http或者ftp站點。
wget http://place.your.url/here
這個命令可以將http://place.your.url/here 首頁下載下來。使用-x會強制建立服務器上一模一樣的目錄,如果使用-nd參數,那么服務器上下載的所有內容都會加到本地當前目錄。
wget -r http://place.your.url/here
這個命令會按照遞歸的方法,下載服務器上所有的目錄和文件,實質就是下載整個網站。這個命令一定要小心使用,因為在下載的時候,被下載網站指向的所有地址同樣會被下載,因此,如果這個網站引用了其他網站,那么被引用的網站也會被下載下來!基於這個原因,這個參數不常用。可以用-l number參數來指定下載的層次。例如只下載兩層,那么使用-l 2。
要是您想制作鏡像站點,那么可以使用-m參數,例如:
wget -m http://place.your.url/here
這時wget會自動判斷合適的參數來制作鏡像站點。此時,wget會登錄到服務器上,讀入robots.txt並按robots.txt的規定來執行。
2、斷點續傳。
當文件特別大或者網絡特別慢的時候,往往一個文件還沒有下載完,連接就已經被切斷,此時就需要斷點續傳。wget的斷點續傳是自動的,只需要使用-c參數,例如:
wget -c http://the.url.of/incomplete/file
使用斷點續傳要求服務器支持斷點續傳。-t參數表示重試次數,例如需要重試100次,那么就寫-t 100,如果設成-t 0,那么表示無窮次重試,直到連接成功。-T參數表示超時等待時間,例如-T 120,表示等待120秒連接不上就算超時。
3、批量下載。
如果有多個文件需要下載,那么可以生成一個文件,把每個文件的URL寫一行,例如生成文件download.txt,然后用命令:
wget -i download.txt
這樣就會把download.txt里面列出的每個URL都下載下來。(如果列的是文件就下載文件,如果列的是網站,那么下載首頁)
4、選擇性的下載。
可以指定讓wget只下載一類文件,或者不下載什么文件。例如:
wget -m –reject=gif http://target.web.site/subdirectory
表示下載http://target.web.site/subdirectory,但是忽略gif文件。–accept=LIST 可以接受的文件類型,–reject=LIST拒絕接受的文件類型。
5、密碼和認證。
wget只能處理利用用戶名/密碼方式限制訪問的網站,可以利用兩個參數:
–http-user=USER設置HTTP用戶
–http-passwd=PASS設置HTTP密碼
對於需要證書做認證的網站,就只能利用其他下載工具了,例如curl。
6、利用代理服務器進行下載。
如果用戶的網絡需要經過代理服務器,那么可以讓wget通過代理服務器進行文件的下載。此時需要在當前用戶的目錄下創建一個.wgetrc文件。文件中可以設置代理服務器:
http-proxy = 111.111.111.111:8080
ftp-proxy = 111.111.111.111:8080
分別表示http的代理服務器和ftp的代理服務器。如果代理服務器需要密碼則使用:
–proxy-user=USER設置代理用戶
–proxy-passwd=PASS設置代理密碼
這兩個參數。使用參數–proxy=on/off 使用或者關閉代理。

介紹一下wget的參數:
--active-ftp 使用主動傳輸模式
--bind-address=ADDRESS 指定本地使用地址(主機名或IP,當本地有多個IP或名字時使用)
--cookies=off 不使用 cookies.
--cut-dirs=NUMBER 忽略 NUMBER層遠程目錄
--cut-dirs=NUMBER 忽略 NUMBER層遠程目錄HTTP 選項
--delete-after 在現在完畢后局部刪除文件
--egd-file=FILE 指定EGD socket的文件名
--egd-file=FILE 指定EGD socket的文件名下載
--exclude-domains=LIST 分號分隔的不被接受的域的列表
--exclude-domains=LIST拒絕的域名
--follow-ftp 只下載FTP鏈接,跟蹤HTML文檔中的FTP鏈接
--follow-tags=LIST 分號分隔的被跟蹤的HTML標簽的列表
--header=STRING 在headers中插入字符串 STRING
--http-passwd=PASS 設定http密碼為 PASS.如果Web服務器需要指定用戶名和口令,用這兩項來設定;
--http-user=USER 設定HTTP用戶名為 USER.
--ignore-length 忽略 `Content-Length"頭域
--limit-rate=RATE 限定下載輸率目錄
--load-cookies=FILE 在開始會話前從文件 FILE中加載cookie
--no-http-keep-alive 關閉 HTTP活動鏈接 (永遠鏈接).
--passive-ftp 使用被動傳輸模式 (缺省值).
--progress=TYPE 設定進程條標記
--proxy-passwd=PASS 設定代理的密碼為 PASS,如果代理服務器需要輸入用戶名和口令,使用這兩個選項
--proxy-user=USER 設定代理的用戶名為 USER
--random-wait 在下載之間等待0...2*WAIT秒
--referer=URL 在HTTP請求中包含 `Referer: URL"頭
--retr-symlinks 在遞歸的時候,將鏈接指向文件(而不是目錄)遞歸下載
--save-cookies=FILE 在會話結束后將 cookies保存到 FILE文件中FTP 選項
--spider 不下載任何東西
--sslcertfile=FILE 可選客戶端證書
--sslcertkey=KEYFILE 可選客戶端證書的KEYFILE
--waitretry=SECONDS 在重新鏈接之間等待1...SECONDS秒
-A, –accept=列表 接受的文件樣式列表,以逗號分隔。
-B, –base=URL 使用 -F -i 文件選項時,在相對鏈接前添加指定的 URL。
-C, --cache=on/off 允許/不允許服務器端的數據緩存(默認是使用的)
-D, --domains=LIST 分號分隔的被接受域的列表
-E, –html-extension 將所有 MIME 類型為 text/html 的文件都加上 .html 擴展文件名。
-F, –force-html 以 HTML 方式處理輸入文件。
-G, –ignore-tags=列表 要忽略的 HTML 標記,以逗號分隔。
-H, --span-hosts 當遞歸時轉到外部主機
-I, --include-directories=LIST 允許目錄的列表
-K, --backup-converted 在轉換文件X之前,將之備份為 X.orig
-L 遞歸時不進入其他主機
-L, --relative 僅僅跟蹤相對鏈接
-N, --timestamping只下載比本地新的文件
-O --output-document=FILE下載文件保存為別的文件名
-P, --directory-prefix=PREFIX 將文件保存到目錄 PREFIX/...
-Q [byetes]:限制下載文件的總大小最多不能超過多少,比如"-Q2k"表示不能超過2K字節,"-Q3m"表示最多不能超過3M字節,如果數字后面什么都不加,就表示是以字節為單位,比如"-Q200″表示最多不能超過200字節;
-Q, –quota=大小 配置接收數據的限額大小。
-R, --reject=LIST拒絕接受的文件類型
-S, –server-response 顯示服務器回應消息。
-T [number of seconds]:超時時間,指定多長時間遠程服務器沒有響應就中斷連接,開始下一次嘗試。比如"-T120″表示如果120秒以后遠程服務器沒有發過來數據,就重新嘗試連接。如果網絡速度比較快,這個時間可以設置的短些,相反,可以設置的長一些,一般最多不超過900,通常也不少於60,一般設置在 120左右比較合適;
-T, --timeout=SECONDS 設定響應超時的秒數
-U, --user-agent=AGENT 設定代理的名稱為 AGENT而不是 Wget/VERSION.
-V, --version 顯示wget的版本后退出
-X, --exclude-directories=LIST 不被包含目錄的列表
-Y on/off:通過/不通過代理服務器進行連接;默認是on
-Y, –proxy=on/off 打開或關閉代理服務器。
-a, --append-output=FILE 把記錄追加到FILE文件中,將日志消息追加到指定文件的末端。
-b 讓wget在后台運行,記錄文件寫在當前目錄下"wget-log"文件中;
-b, --background 啟動后轉入后台執行
-c 斷點續傳,這也是個非常有用的設置,特別當下載比較大的文件的時候,如果中途意外中斷,那么連接恢復的時候會從上次沒傳完的地方接着傳,而不是又從頭開始,使用這一項需要遠程服務器也支持斷點續傳,一般來講,基於UNIX/Linux的Web/FTP服務器都支持斷點續傳;
-c, --continue 接着下載沒下載完的文件
-d, --debug 打印調試輸出
-e, --execute=COMMAND 執行`.wgetrc"格式的命令,wgetrc格式參見/etc/wgetrc或~/.wgetrc記錄和輸入文件
-g, --glob=on/off 打開或關閉文件名的 globbing機制,設置是否展開有通配符的文件名。
-h, --help顯示軟件幫助信息;
-i, --input-file=FILE 下載在FILE文件中出現的URLs
-k 把絕對鏈接轉為相對鏈接,這樣下載之后的網頁方便瀏覽
-k, --convert-links 轉換非相對鏈接為相對鏈接
-l [depth]:下載遠程服務器目錄結構的深度,例如"-l 5″下載目錄深度小於或者等於5以內的目錄結構或者文件;
-l, --level=NUMBER 最大遞歸深度 (inf 或 0 代表無窮).
-m 做站點鏡像時的選項,如果你想做一個站點的鏡像,使用這個選項,它將自動設定其他合適的選項以便於站點鏡像;
-m, –mirror 等效於 -r -N -l inf -nr 的選項。
-nH 不創建以目標主機域名為目錄名的目錄,將目標主機的目錄結構直接下到當前目錄下;
-nH, –no-host-directories 不創建含有遠程主機名稱的目錄。
-nc, --no-clobber 不要覆蓋存在的文件或使用.#前綴,不更改已經存在的文件,也不使用在文件名后
-nd –no-directories 不創建目錄。
-np 只下載目標站點指定目錄及其子目錄的內容。這也是一個非常有用的選項,我們假設某個人的個人主頁里面有一個指向這個站點其他人個人主頁的連接,而我們只想下載這個人的個人主頁,如果不設置這個選項,甚至–有可能把整個站點給抓下來,這顯然是我們通常不希望的;
-np, --no-parent 不要追溯到父目錄
-nr, --dont-remove-listing 不移走 `.listing"文件
-nv, --non-verbose 關掉冗長模式,但不是安靜模式
-o, --output-file=FILE 把記錄寫到FILE文件中
-p 下載網頁所需要的所有文件
-p, --page-requisites 下載顯示HTML文件的所有圖片遞歸下載中的包含和不包含(accept/reject),下載所有顯示完整網頁所需的文件,例如圖像。
-q, –quiet 安靜模式(不輸出信息)。
-r 在本機建立服務器端目錄結構;表示遞歸下載,會下載所有的鏈接,不過要注意的是,不要單獨使用這個參數,因為如果你要下載的網站也有別的網站的鏈接,wget也會把別的網站的東西下載 下來,所以要加上 -np這個參數,表示不下載別的站點的鏈接. -k表示將下載的網頁里的鏈接修改為本地鏈接.-p獲得所有顯示網頁所需的元素,比如圖片什么的.
-r, --recursive 遞歸下載-下載整個網站、目錄(小心使用)
-s, --save-headers 保存HTTP頭到文件
-t [nuber of times]:嘗試次數,當wget無法與服務器建立連接時,嘗試連接多少次。比如"-t120″表示嘗試120次。當這一項為"0″的時候,指定嘗試無窮多次直到連接成功為止,這個設置非常有用,當對方服務器突然關機或者網絡突然中斷的時候,可以在恢復正常后繼續下載沒有傳完的文件;
-t, --tries=NUMBER 設定最大嘗試鏈接次數(0 表示無限制).
-v, --verbose 冗長模式(這是缺省設置)詳細輸出模式(默認)。
-w [number of seconds]:在兩次嘗試之間等待多少秒,比如"-w 100″表示兩次嘗試之間等待100秒;
-w, --wait=SECONDS 兩次嘗試之間間隔SECONDS秒
-x 與"-nd"設置剛好相反,創建完整的目錄結構,例如"wget -nd http://www.baidu.com"將創建在當前目錄下創建"www.baidu.com"子目錄,然后按照服務器實際的目錄結構一級一級建下去,直到所有的文件都傳完為止;
-x, --force-directories 強制創建目錄

代碼:
  $ wget –help
  GNU Wget 1.9.1,非交互式的網絡文件下載工具。
  用法: wget [選項]… [URL]…
  長選項必須用的參數在使用短選項時也是必須的。
啟動:
  -V, –version 顯示 Wget 的版本並且退出。
  -h, –help 打印此幫助。
  -b, -background 啟動后進入后台操作。
  -e, -execute=COMMAND 運行'.wgetrc'形式的命令。
日志記錄及輸入文件:
  -o, –output-file=文件 將日志消息寫入到指定文件中。
  -a, –append-output=文件 將日志消息追加到指定文件的末端。
  -d, –debug 打印調試輸出。
  -q, –quiet 安靜模式(不輸出信息)。
  -v, –verbose 詳細輸出模式(默認)。
  -nv, –non-verbose 關閉詳細輸出模式,但不進入安靜模式。
  -i, –input-file=文件 下載從指定文件中找到的 URL。
  -F, –force-html 以 HTML 方式處理輸入文件。
  -B, –base=URL 使用 -F -i 文件選項時,在相對鏈接前添加指定的 URL。
下載:
  -t, –tries=次數 配置重試次數(0 表示無限)。
  –retry-connrefused 即使拒絕連接也重試。
  -O –output-document=文件 將數據寫入此文件中。
  -nc, –no-clobber 不更改已經存在的文件,也不使用在文件名后
  添加 .#(# 為數字)的方法寫入新的文件。
  -c, –continue 繼續接收已下載了一部分的文件。
  –progress=方式 選擇下載進度的表示方式。
  -N, –timestamping 除非遠程文件較新,否則不再取回。
  -S, –server-response 顯示服務器回應消息。
  –spider 不下載任何數據。
  -T, –timeout=秒數 配置讀取數據的超時時間 (秒數)。
  -w, –wait=秒數 接收不同文件之間等待的秒數。
  –waitretry=秒數 在每次重試之間稍等一段時間 (由 1 秒至指定的 秒數不等)。
  –random-wait 接收不同文件之間稍等一段時間(由 0 秒至 2*WAIT 秒不等)。
  -Y, –proxy=on/off 打開或關閉代理服務器。
  -Q, –quota=大小 配置接收數據的限額大小。
  –bind-address=地址 使用本機的指定地址 (主機名稱或 IP) 進行連接。
  –limit-rate=速率 限制下載的速率。
  –dns-cache=off 禁止查找存於高速緩存中的 DNS。
  –restrict-file-names=OS 限制文件名中的字符為指定的 OS (操作系統) 所允許的字符。
目錄:
  -nd –no-directories 不創建目錄。
  -x, –force-directories 強制創建目錄。
  -nH, –no-host-directories 不創建含有遠程主機名稱的目錄。
  -P, –directory-prefix=名稱 保存文件前先創建指定名稱的目錄。
  –cut-dirs=數目 忽略遠程目錄中指定數目的目錄層。
HTTP 選項:
  –http-user=用戶 配置 http 用戶名。
  –http-passwd=密碼 配置 http 用戶密碼。
  -C, –cache=on/off (不)使用服務器中的高速緩存中的數據 (默認是使用的)。
  -E, –html-extension 將所有 MIME 類型為 text/html 的文件都加上 .html 擴展文件名。
  –ignore-length 忽略"Content-Length"文件頭字段。
  –header=字符串 在文件頭中添加指定字符串。
  –proxy-user=用戶 配置代理服務器用戶名。
  –proxy-passwd=密碼 配置代理服務器用戶密碼。
  –referer=URL 在 HTTP 請求中包含"Referer:URL"頭。
  -s, –save-headers 將 HTTP 頭存入文件。
  -U, –user-agent=AGENT 標志為 AGENT 而不是 Wget/VERSION。
  –no-http-keep-alive 禁用 HTTP keep-alive(持久性連接)。
  –cookies=off 禁用 cookie。
  –load-cookies=文件 會話開始前由指定文件載入 cookie。
  –save-cookies=文件 會話結束后將 cookie 保存至指定文件。
  –post-data=字符串 使用 POST 方法,發送指定字符串。
  –post-file=文件 使用 POST 方法,發送指定文件中的內容。
HTTPS (SSL) 選項:
  –sslcertfile=文件 可選的客戶段端證書。
  –sslcertkey=密鑰文件 對此證書可選的"密鑰文件"。
  –egd-file=文件 EGD socket 文件名。
  –sslcadir=目錄 CA 散列表所在的目錄。
  –sslcafile=文件 包含 CA 的文件。
  –sslcerttype=0/1 Client-Cert 類型 0=PEM (默認) / 1=ASN1 (DER)
  –sslcheckcert=0/1 根據提供的 CA 檢查服務器的證書
  –sslprotocol=0-3 選擇 SSL 協議;0=自動選擇,
  1=SSLv2 2=SSLv3 3=TLSv1
FTP 選項:
  -nr, –dont-remove-listing 不刪除".listing"文件。
  -g, –glob=on/off 設置是否展開有通配符的文件名。
  –passive-ftp 使用"被動"傳輸模式。
  –retr-symlinks 在遞歸模式中,下載鏈接所指示的文件(連至目錄則例外)。
遞歸下載:
  -r, –recursive 遞歸下載。
  -l, –level=數字 最大遞歸深度(inf 或 0 表示無限)。
  –delete-after 刪除下載后的文件。
  -k, –convert-links 將絕對鏈接轉換為相對鏈接。
  -K, –backup-converted 轉換文件 X 前先將其備份為 X.orig。
  -m, –mirror 等效於 -r -N -l inf -nr 的選項。
  -p, –page-requisites 下載所有顯示完整網頁所需的文件,例如圖像。
  –strict-comments 打開對 HTML 備注的嚴格(SGML)處理選項。
遞歸下載時有關接受/拒絕的選項:
  -A, –accept=列表 接受的文件樣式列表,以逗號分隔。
  -R, –reject=列表 排除的文件樣式列表,以逗號分隔。
  -D, –domains=列表 接受的域列表,以逗號分隔。
  –exclude-domains=列表 排除的域列表,以逗號分隔。
  –follow-ftp 跟隨 HTML 文件中的 FTP 鏈接。
  –follow-tags=列表 要跟隨的 HTML 標記,以逗號分隔。
  -G, –ignore-tags=列表 要忽略的 HTML 標記,以逗號分隔。
  -H, –span-hosts 遞歸時可進入其它主機。
  -L, –relative 只跟隨相對鏈接。
  -I, –include-directories=列表 要下載的目錄列表。
  -X, –exclude-directories=列表 要排除的目錄列表。
  -np, –no-parent 不搜索上層目錄。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM