方便的網路下載工具wget 可下載網站目錄下的所有檔案(可下載整個網站)

oneweaklight發表於2011-07-06
(摘要)wget是linux下命令列的下載工具,功能很強大,雖然我很少用,一般下在一些小東西都是直接用firefox,seamonkey這些瀏覽器自帶的下載功能下載,沒有必要用wget或者其他下載工具。但是某些時候卻不是瀏覽器自帶的下載功能和一些其他的下載軟體所能做的...[@more@]

wget是linux下命令列的下載工具,功能很強大,雖然我很少用,一般下在一些小東西都是直接用firefox,seamonkey這些瀏覽器自帶的下載功能下載,沒有必要用wget或者其他下載工具。但是某些時候卻不是瀏覽器自帶的下載功能和一些其他的下載軟體所能做的的,這時候就得用wget了。比如如果你想下載一個網頁目錄下的所有檔案,如何做呢?

先介紹幾個引數:-c 斷點續傳(備註:使用斷點續傳要求伺服器支援斷點續傳),-r 遞迴下載(目錄下的所有檔案,包括子目錄),-np 遞迴下載不搜尋上層目錄,-k 把絕對連結轉為相對連結,這樣下載之後的網頁方便瀏覽。-L 遞迴時不進入其他主機,-p 下載網頁所需要的所有檔案。

比如:#wget -c -r -np -k -L -p xxxx.com/yyyy/zzzzz 下載xxxx網站下面的目錄zzzzz

wget是一個強力方便的命令列方式下的下載工具。本文介紹了wget的基本用法。

網路使用者有時候會遇到需要下載一批檔案的情況,有時甚至需要把整個網站下載下來或者製作網站的映象。在Windows下的使用者都比較熟悉 Teleport,webzip等等網站下載工具,實際上AIX中也完全可以做到這樣的功能,那就是利用wget工具。wget是一個命令列工具,用來下載網路檔案或者整個網站,它具有自動重試、斷點續傳、支援代理伺服器等等強大的功能。它可以完全替代ftp客戶端。wget是在Linux下開發的開放原始碼的軟體,作者是Hrvoje Niksic,後來被移植到包括Windows在內的各個平臺上。

wget雖然功能強大,但是使用起來還是比較簡單的,基本的語法是:wget [引數列表] URL。下面就結合具體的例子來說明一下wget的用法。

1、下載整個http或者ftp站點。

wget

這個命令可以將 首頁下載下來。使用-x會強制建立伺服器上一模一樣的目錄,如果使用-nd引數,那麼伺服器上下載的所有內容都會加到本地當前目錄。

wget -r

這個命令會按照遞迴的方法,下載伺服器上所有的目錄和檔案,實質就是下載整個網站。這個命令一定要小心使用,因為在下載的時候,被下載網站指向的所有地址同樣會被下載,因此,如果這個網站引用了其他網站,那麼被引用的網站也會被下載下來!基於這個原因,這個引數不常用。可以用-l number引數來指定下載的層次。例如只下載兩層,那麼使用-l 2。

要是您想製作映象站點,那麼可以使用-m引數,例如:

wget -m

這時wget會自動判斷合適的引數來製作映象站點。此時,wget會登入到伺服器上,讀入robots.txt並按robots.txt的規定來執行。

2、斷點續傳。

當檔案特別大或者網路特別慢的時候,往往一個檔案還沒有下載完,連線就已經被切斷,此時就需要斷點續傳。wget的斷點續傳是自動的,只需要使用-c引數,例如:

wget -c

使用斷點續傳要求伺服器支援斷點續傳。-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

表示下載,但是忽略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這個強大的網路工具的使用方法,現列舉如下:
wget 使用技巧集錦
wget的使用形式是:
wget [引數列表] URL

首先來介紹一下wget的主要引數:

· -b:讓wget在後臺執行,記錄檔案寫在當前目錄下”wget-log”檔案中;
· -t [nuber of times]:嘗試次數,當wget無法與伺服器建立連線時,嘗試連線多少次。比如”-t120″表示嘗試120次。當這一項為”0″的時候,指定嘗試無窮多次直到連線成功為止,這個設定非常有用,當對方伺服器突然關機或者網路突然中斷的時候,可以在恢復正常後繼續下載沒有傳完的檔案;
· -c:斷點續傳,這也是個非常有用的設定,特別當下載比較大的檔案的時候,如果中途意外中斷,那麼連線恢復的時候會從上次沒傳完的地方接著傳,而不是又從頭開始,使用這一項需要遠端伺服器也支援斷點續傳,一般來講,基於UNIX/Linux的Web/FTP伺服器都支援斷點續傳;
· -T [number of seconds]:超時時間,指定多長時間遠端伺服器沒有響應就中斷連線,開始下一次嘗試。比如”-T120″表示如果120秒以後遠端伺服器沒有發過來資料,就重新嘗試連線。如果網路速度比較快,這個時間可以設定的短些,相反,可以設定的長一些,一般最多不超過900,通常也不少於60,一般設定在 120左右比較合適;
· -w [number of seconds]:在兩次嘗試之間等待多少秒,比如”-w 100″表示兩次嘗試之間等待100秒;
· -Y on/off:透過/不透過代理伺服器進行連線;預設是on
· -Q [byetes]:限制下載檔案的總大小最多不能超過多少,比如”-Q2k”表示不能超過2K位元組,”-Q3m”表示最多不能超過3M位元組,如果數字後面什麼都不加,就表示是以位元組為單位,比如”-Q200″表示最多不能超過200位元組;
· -nd:不下載目錄結構,把從伺服器所有指定目錄下載的檔案都堆到當前目錄裡;
· -x:與”-nd”設定剛好相反,建立完整的目錄結構,例如”wget -nd baidu.com”將建立在當前目錄下建立””子目錄,然後按照伺服器實際的目錄結構一級一級建下去,直到所有的檔案都傳完為止;
· -nH:不建立以目標主機域名為目錄名的目錄,將目標主機的目錄結構直接下到當前目錄下;
· –http-user=username
· –http-passwd=password:如果Web伺服器需要指定使用者名稱和口令,用這兩項來設定;
· –proxy-user=username
· –proxy-passwd=password:如果代理伺服器需要輸入使用者名稱和口令,使用這兩個選項;
· -r:在本機建立伺服器端目錄結構;
· -l [depth]:下載遠端伺服器目錄結構的深度,例如”-l 5″下載目錄深度小於或者等於5以內的目錄結構或者檔案;
· -m:做站點映象時的選項,如果你想做一個站點的映象,使用這個選項,它將自動設定其他合適的選項以便於站點映象;
· -np:只下載目標站點指定目錄及其子目錄的內容。這也是一個非常有用的選項,我們假設某個人的個人主頁裡面有一個指向這個站點其他人個人主頁的連線,而我們只想下載這個人的個人主頁,如果不設定這個選項,甚至–有可能把整個站點給抓下來,這顯然是我們通常不希望的;

II 如何設定wget所使用的代理伺服器

wget 可以使用使用者設定檔案”.wgetrc”來讀取很多設定,我們這裡主要利用這個檔案來是設定代理伺服器。使用者用什麼使用者登入,那麼什麼使用者主目錄下的 “.wgetrc”檔案就起作用。例如,”root”使用者如果想使用”.wgetrc”來設定代理伺服器,”/root/.wgert”就起作用,下面給出一個”.wgetrc”檔案的內容,可以參照這個例子來編寫自己的”wgetrc”檔案:
http-proxy = 111.111.111.111:8080
ftp-proxy = 111.111.111.111:8080
這兩行的含義是,代理伺服器IP地址為:111.111.111.111,埠號為:80。第一行指定HTTP協議所使用的代理伺服器,第二行指定FTP協議所使用的代理伺服器。

get如何使用學校的socks代理?
/usr/local/etc/wgetrc 或~/.wgetrc:

http_proxy = 202.119.24.35:8080
ftp_proxy = 202.119.24.35:8080
proxy-user = user
proxy-passwd = password
use_proxy = on
引數:
程式碼:

  $ 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 不搜尋上層目錄。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25067344/viewspace-1052056/,如需轉載,請註明出處,否則將追究法律責任。

相關文章