wget是在Linux下開發的開放源代碼的軟體,作者是Hrvoje Niksic,後來被移植到包括Windows在内的各個平台上。它有以下功能和特點:
(1)支援斷點下傳功能;這一點,也是網絡螞蟻和FlashGet當年最大的賣點,現在,Wget也可以使用此功能,那些網絡不是太好的使用者可以放心了;
(2)同時支援FTP和HTTP下載下傳方式;盡管現在大部分軟體可以使用HTTP方式下載下傳,但是,有些時候,仍然需要使用FTP方式下載下傳軟體;
(3)支援代理伺服器;對安全強度很高的系統而言,一般不會将自己的系統直接暴露在網際網路上,是以,支援代理是下載下傳軟體必須有的功能;
(4)設定友善簡單;可能,習慣圖形界面的使用者已經不是太習慣指令行了,但是,指令行在設定上其實有更多的優點,最少,滑鼠可以少點很多次,也不要擔心是否錯點滑鼠;
(5)程式小,完全免費;程式小可以考慮不計,因為現在的硬碟實在太大了;完全免費就不得不考慮了,即使網絡上有很多所謂的免費軟體,但是,這些軟體的廣告卻不是我們喜歡的;
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還有很多有用的功能,需要使用者去挖掘。
附錄:
指令格式:
wget [參數清單] [目标軟體、網頁的網址]
-V,–version 顯示軟體版本号然後退出;
-h,–help顯示軟體幫助資訊;
-e,–execute=COMMAND 執行一個 “.wgetrc”指令
-o,–output-file=FILE 将軟體輸出資訊儲存到檔案;
-a,–append-output=FILE将軟體輸出資訊追加到檔案;
-d,–debug顯示輸出資訊;
-q,–quiet 不顯示輸出資訊;
-i,–input-file=FILE 從檔案中取得URL;
-t,–tries=NUMBER 是否下載下傳次數(0表示無窮次)
-O –output-document=FILE下載下傳檔案儲存為别的檔案名
-nc, –no-clobber 不要覆寫已經存在的檔案
-N,–timestamping隻下載下傳比本地新的檔案
-T,–timeout=SECONDS 設定逾時時間
-Y,–proxy=on/off 關閉代理
-nd,–no-directories 不建立目錄
-x,–force-directories 強制建立目錄
-r,–recursive 下載下傳整個網站、目錄(小心使用)
-l,–level=NUMBER 下載下傳層次
-A,–accept=LIST 可以接受的檔案類型
-R,–reject=LIST拒絕接受的檔案類型
-D,–domains=LIST可以接受的域名
–exclude-domains=LIST拒絕的域名
-L,–relative 下載下傳關聯連結
–follow-ftp 隻下載下傳FTP連結
-H,–span-hosts 可以下載下傳外面的主機
-I,–include-directories=LIST允許的目錄
-X,–exclude-directories=LIST 拒絕的目錄
中文文檔名在平常的情況下會被編碼, 但是在 –cut-dirs 時又是正常的,
wget -r -np -nH –cut-dirs=3 ftp://host/test/
測試.txt
wget -r -np -nH -nd ftp://host/test/
%B4%FA%B8%D5.txt
wget “ftp://host/test/*”
由 於不知名的原因,可能是為了避開特殊檔名, wget 會自動将抓取檔名的部分用 encode_string 處理過, 是以該 patch 就把被 encode_string 處理成 “%3A” 這種東西, 用 decode_string 還原成 “:”,并套用在目錄與檔案名稱的部分,decode_string 是 wget 内建的函式。
wget -t0 -c -nH -x -np -b -m -P /home/sunny/NOD32view/ http://downloads1.kaspersky-labs.com/bases/ -o wget.log