一個語句就可以下載cvpr2016的全部論文:
wget -c -N ?--no-clobber --convert-links --random-wait -r -p -E -e robots=off -U mozilla http://www.cv-foundation.org/openaccess/CVPR2016.py
其中,-c表示斷點續傳;-N表示已經下載的內容不再重復下載。
_______________________________________________________________________________________


wget 可以跟蹤HTML頁面上的鏈接依次下載來創建遠程服務器的本地版本,完全重建原始站點的目錄結構。這又常被稱作"遞歸下載"。在遞歸下載的時候,wget 遵循Robot Exclusion標準(/robots.txt). wget可以在下載的同時,將鏈接轉換成指向本地文件,以方便離線瀏覽。?
wget 非常穩定,它在帶寬很窄的情況下和不穩定網絡中有很強的適應性.如果是由于網絡的原因下載失敗,wget會不斷的嘗試,直到整個文件下載完畢。如果是服務器打斷下載過程,它會再次聯到服務器上從停止的地方繼續下載。這對從那些限定了鏈接時間的服務器上下載大文件非常有用。?
wget的常見用法
wget雖然功能強大,但是使用起來還是比較簡單的,
基本的語法是:wget [參數列表] "URL" 用""引起來可以避免因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的使用格式?
Usage: wget [OPTION]... [URL]...
* 用wget做站點鏡像:?
wget -r -p -np -k?http://dsec.pku.edu.cn/~usr_name/
# 或者
wget -m?http://dsec.pku.edu.cn/~usr_name/
* 在不穩定的網絡上下載一個部分下載的文件,以及在空閑時段下載?
wget -t 0 -w 31 -c?http://dsec.pku.edu.cn/BBC.avi?-o down.log &
# 或者從filelist讀入要下載的文件列表
wget -t 0 -w 31 -c -B?ftp://dsec.pku.edu.cn/linuxsoft?-i filelist.txt -o down.log &
上面的代碼還可以用來在網絡比較空閑的時段進行下載。我的用法是:在mozilla中將不方便當時下載的URL鏈接拷貝到內存中然后粘貼到文件filelist.txt中,在晚上要出去系統前執行上面代碼的第二條。?
* 使用代理下載?
wget -Y on -p -k?https://sourceforge.net/projects/wvware/
代理可以在環境變量或wgetrc文件中設定?
# 在環境變量中設定代理
export PROXY=http://211.90.168.94:8080/
# 在~/.wgetrc中設定代理
http_proxy =?http://proxy.yoyodyne.com:18023/
ftp_proxy =?http://proxy.yoyodyne.com:18023/
wget各種選項分類列表
* 啟動?
? -V,? --version?????????? 顯示wget的版本后退出
? -h,? --help????????????? 打印語法幫助
? -b,? --background??????? 啟動后轉入后臺執行
? -e,? --execute=COMMAND?? 執行`.wgetrc'格式的命令,wgetrc格式參見/etc/wgetrc或~/.wgetrc
* 記錄和輸入文件?
? -o,? --output-file=FILE???? 把記錄寫到FILE文件中
? -a,? --append-output=FILE?? 把記錄追加到FILE文件中
? -d,? --debug??????????????? 打印調試輸出
? -q,? --quiet??????????????? 安靜模式(沒有輸出)
? -v,? --verbose????????????? 冗長模式(這是缺省設置)
? -nv, --non-verbose????????? 關掉冗長模式,但不是安靜模式
? -i,? --input-file=FILE????? 下載在FILE文件中出現的URLs
? -F,? --force-html?????????? 把輸入文件當作HTML格式文件對待
? -B,? --base=URL???????????? 將URL作為在-F -i參數指定的文件中出現的相對鏈接的前綴
?????? --sslcertfile=FILE???? 可選客戶端證書
?????? --sslcertkey=KEYFILE?? 可選客戶端證書的KEYFILE
?????? --egd-file=FILE??????? 指定EGD socket的文件名
* 下載?
?????? --bind-address=ADDRESS?? 指定本地使用地址(主機名或IP,當本地有多個IP或名字時使用)
? -t,? --tries=NUMBER?????????? 設定最大嘗試鏈接次數(0 表示無限制).
? -O?? --output-document=FILE?? 把文檔寫到FILE文件中
? -nc, --no-clobber???????????? 不要覆蓋存在的文件或使用.#前綴
? -c,? --continue?????????????? 接著下載沒下載完的文件
?????? --progress=TYPE????????? 設定進程條標記
? -N,? --timestamping?????????? 不要重新下載文件除非比本地文件新
? -S,? --server-response??????? 打印服務器的回應
?????? --spider???????????????? 不下載任何東西
? -T,? --timeout=SECONDS??????? 設定響應超時的秒數
? -w,? --wait=SECONDS?????????? 兩次嘗試之間間隔SECONDS秒
?????? --waitretry=SECONDS????? 在重新鏈接之間等待1...SECONDS秒
?????? --random-wait??????????? 在下載之間等待0...2*WAIT秒
? -Y,? --proxy=on/off?????????? 打開或關閉代理
? -Q,? --quota=NUMBER?????????? 設置下載的容量限制
?????? --limit-rate=RATE??????? 限定下載輸率
* 目錄?
? -nd? --no-directories??????????? 不創建目錄
? -x,? --force-directories???????? 強制創建目錄
? -nH, --no-host-directories?????? 不創建主機目錄
? -P,? --directory-prefix=PREFIX?? 將文件保存到目錄 PREFIX/...
?????? --cut-dirs=NUMBER?????????? 忽略 NUMBER層遠程目錄
* HTTP 選項?
?????? --http-user=USER????? 設定HTTP用戶名為 USER.
?????? --http-passwd=PASS??? 設定http密碼為 PASS.
? -C,? --cache=on/off??????? 允許/不允許服務器端的數據緩存 (一般情況下允許).
? -E,? --html-extension????? 將所有text/html文檔以.html擴展名保存
?????? --ignore-length?????? 忽略 `Content-Length'頭域
?????? --header=STRING?????? 在headers中插入字符串 STRING
?????? --proxy-user=USER???? 設定代理的用戶名為 USER
?????? --proxy-passwd=PASS?? 設定代理的密碼為 PASS
?????? --referer=URL???????? 在HTTP請求中包含 `Referer: URL'頭
? -s,? --save-headers??????? 保存HTTP頭到文件
? -U,? --user-agent=AGENT??? 設定代理的名稱為 AGENT而不是 Wget/VERSION.
?????? --no-http-keep-alive? 關閉 HTTP活動鏈接 (永遠鏈接).
?????? --cookies=off???????? 不使用 cookies.
?????? --load-cookies=FILE?? 在開始會話前從文件 FILE中加載cookie
?????? --save-cookies=FILE?? 在會話結束后將 cookies保存到 FILE文件中
* FTP 選項?
? -nr, --dont-remove-listing?? 不移走 `.listing'文件
? -g,? --glob=on/off?????????? 打開或關閉文件名的 globbing機制
?????? --passive-ftp?????????? 使用被動傳輸模式 (缺省值).
?????? --active-ftp??????????? 使用主動傳輸模式
?????? --retr-symlinks???????? 在遞歸的時候,將鏈接指向文件(而不是目錄)
* 遞歸下載?
? -r,? --recursive????????? 遞歸下載--慎用!
? -l,? --level=NUMBER?????? 最大遞歸深度 (inf 或 0 代表無窮).
?????? --delete-after?????? 在現在完畢后局部刪除文件
? -k,? --convert-links????? 轉換非相對鏈接為相對鏈接
? -K,? --backup-converted?? 在轉換文件X之前,將之備份為 X.orig
? -m,? --mirror???????????? 等價于 -r -N -l inf -nr.
? -p,? --page-requisites??? 下載顯示HTML文件的所有圖片
* 遞歸下載中的包含和不包含(accept/reject)?
? -A,? --accept=LIST??????????????? 分號分隔的被接受擴展名的列表
? -R,? --reject=LIST??????????????? 分號分隔的不被接受的擴展名的列表
? -D,? --domains=LIST?????????????? 分號分隔的被接受域的列表
?????? --exclude-domains=LIST?????? 分號分隔的不被接受的域的列表
?????? --follow-ftp???????????????? 跟蹤HTML文檔中的FTP鏈接
?????? --follow-tags=LIST?????????? 分號分隔的被跟蹤的HTML標簽的列表
? -G,? --ignore-tags=LIST?????????? 分號分隔的被忽略的HTML標簽的列表
? -H,? --span-hosts???????????????? 當遞歸時轉到外部主機
? -L,? --relative?????????????????? 僅僅跟蹤相對鏈接
? -I,? --include-directories=LIST?? 允許目錄的列表
? -X,? --exclude-directories=LIST?? 不被包含目錄的列表
? -np, --no-parent????????????????? 不要追溯到父目錄
問題
在遞歸下載的時候,遇到目錄中有中文的時候,wget創建的本地目錄名會用URL編碼規則處理。如"天網防火墻"會被存為"%CC%EC%CD%F8%B7%C0%BB%F0%C7%BD",這造成閱讀上的