Wget下载网页与镜像网站
本文主要介紹GNU Wget實用程序及其在在FreeBSD操作系統下的安裝過程,并對幾個最常用的下載功能進行了說明,主要包括以下幾個方面:
- GNU Wget概述
- Wget程序安裝
- Wget常用功能
1 GNU Wget概述
GNU?Wget是一個免費的實用程序,方便用戶以非交互方式下載文件,支持HTTP、HTTPS和FTP協議,也可以通過HTTP代理進行檢索。
(1)非互式
Wget是非交互式的,這意味著它可以在后臺工作,下載過程中不需要用戶登錄,也不需要用戶介入。用戶啟動Wget任務后即可斷開與系統的連接,留下Wget默默地完成工作,這在傳輸大量數據或者執行耗時較長的任務時提供了極大的便利。
(2)遞歸下載
Wget可以跟蹤HTML、XHTML和CSS頁面中的鏈接,以創建遠程網站的本地版本,從而完全重新創建原始網站的目錄結構。這有時被稱為“遞歸下載”。當然,Wget會尊重機器人排除標準(/robots.txt)。用戶還可以指示Wget將下載文件中的鏈接轉換為指向本地文件,以便脫機查看。
(3)站點鏡像
當通過FTP檢索時,可以使用文件名通配符匹配和目錄的遞歸鏡像。Wget可以讀取HTTP和FTP服務器提供的時間戳信息,并將其存儲在本地。因此,Wget可以查看遠程文件自上次檢索以來是否發生了變化,如果有,則自動檢索新版本。這使得Wget適合于FTP站點和主頁的鏡像。
(4)斷點續傳
Wget被設計為對緩慢或不穩定的網絡連接的健壯性。如果由于網絡問題導致下載失敗,它將繼續重試,直到檢索到整個文件。如果服務器支持重傳,它將指示服務器從上次停止的地方繼續下載。
(5)代理服務
Wget支持代理服務器,它可以減輕網絡負載,加快檢索速度,并提供防火墻后的訪問。Wget默認使用被動FTP下載,主動FTP是一個選項。
(6)功能豐富
Wget內置豐富的功能,大多數功能都可以可以通過命令行選項或通過初始化文件進行配置。
(7)免費使用
GNU?Wget是一個自由軟件。這意味著每個人都可以根據自由軟件基金會發布的GNU通用公共許可證條款使用它、重新分發它和/或修改它,更多的功能請參見GNUWget的官網說明。
2 Wget程序安裝
在FreeBSD操作系統中安裝Wget非常簡便。可以通過Potrs手工編譯來安裝,也可以通過pkg來安裝編譯好的二進制程序包。
以root用戶在命令行中輸入pkg install wget,然后按照提示操作即可安裝編譯好的Wget程序。
3 Wget常用功能
安裝完后,運行 wget --help 命令查看程序幫助。
從幫助信息中可以看出,Wget最簡單的使用方式為在wget命令后面直接跟要下載的URL網絡地址,那就隨便找個地址輸入一下看看吧。
同時,也會發現wget中可以設置的參數非常多,大體上分為啟動參數、日志與輸入文件、下載參數、目錄參數、HTTP選項、HTTPS選項、FTP選項、FTPS選項、遞歸下載選項、遞歸接受、拒絕選項等等。如此數量的參數看著都讓人頭大,好在日常應用中涉及的參數不太多,下面結合常用的幾個下載場景,對涉及到的選項進行簡要說明。
(1)斷點續傳
短格式:-c
長格式:--continue’
斷點續傳是下載過程中最常用的功能,可以從以前下載的斷點處繼續下載而不是重新從頭來過。這個參數常用于網絡不穩定或者耗時較長的大文件下載,命令格式如下:
wget --continue http://localhost/index.html(2)不生成主機前綴文件夾
短格式:-nH
長格式:--no-host-directories
在下載多個文件時,Wget會解析URL中的目錄結構自動生成文件存儲結構,默認會從主機開始生成文件夾。這個選項告訴Wget不要從主機以后生成文件夾,不要生成這個主機文件夾,命令格式如下:
wget --no-host-directories http://localhost/index.html(3)調整擴展名
短格式:-E
長格式:--adjust-extension
如果下載的文件類型為“application/xhtml+xml”或“text/html”而URL卻沒有以正則表達式“\.[Hh][Tt][Mm][Ll]?”結尾時,這個選項會給文件名加下“.html”后綴,以保證文件類型的正確。這種方式在需要鏡像一個網頁文件不以html結尾的網站時會起到很大的作用。命令格式如下:
wget --adjust-extension http://localhost/index.html(4)壓縮下載
長格式:--compression=type
壓縮下載選項只有一種長格式,用來選擇傳輸過程中的壓縮類型,可選項為“auto”、“gzip”和“none”。
如果定義為“auto”或者“gzip”,Wget會請求服務器使用gzip格式壓縮這個文件。如果服務器壓縮了這個文件,并在響應中加入了相應的“Content-Encoding”頭域,接收到的文件將會被自動解壓縮。
如果定義為“none”,Wget不會請求服務器壓縮這個文件。這也是默認的壓縮選項。
命令格式如下:
wget --compression=auto http://localhost/index.html(5)設置用戶代理字符串
短格式:-U agent-string
長格式:--user-agent=agent-string
這個選項設置發送給HTTP服務器的“User-Agent”頭字段。HTTP協議允許瀏覽器通過“User-Agent”頭域字段識別自己。服務器也可以通過這個字段來區分“WWW”軟件,并進行客戶追蹤等。Wget通常使用“Wget/version”字符串來標記自己。然而,一些站點可能實施了根據用戶代理信息來調整服務輸出的策略,可能會拒絕向看起來不像是瀏覽器的的客戶提供信息。此選項允許更改由Wget發布的用戶代理頭部行。當然,如非必要,最好要使用這個選項。命令格式如下:
wget --user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"?http://localhost/index.html(6)下載子文件夾
短格式:-r
長格式:--recursive
此選項開啟遞歸下載,默認摸索的樹深度為5級,如果要自定義樹深度可以使用--level參數。
短格式:-l depth
長格式:--level=depth
此選項設置遞歸搜索的子文件夾的深度,可以避免下載較深的目錄,此選項默認值為5,設置為“-l 0”或“-l inf”代表無限深度。
命令格式如下:
wget -r -l 0?http://localhost/index.html(7)檢查時間戳
短格式:-N
長格式:--timestamping
此選項用于比對文件的時間戳,只有修改時間發生變化了的文件才會被下載。這有利于節省網絡帶寬和等待時間,沒有變化的文件不會被下載多次。命令格式如下:
wget -N ?http://localhost/index.html wget --timestamping http://localhost/index.html(8)鏡像下載
短格式:-m
長格式:--mirror
此選項用于網站或文件的鏡像下載。此選項打開了遞歸下載、無限深度和時間戳檢查選項,并且保持FTP目錄列表顯示,實際效果相當于“-r -N -l inf --no-remove-listing”,即自動進行無深度限制的遞歸搜索,檢查文件的修改時間戳,只下載修改時間發生變化的文件。使用此選項需要注意的是Wget不會自動修改頁面中的鏈接,網站原封不動的下載,原封不動的瀏覽。命令格式如下:
wget -r -N -l inf ?http://localhost/index.html wget --mirror?http://localhost/index.html(9)下載頁面內聯資源
短格式:-p
長格式:--page-requisites
此選項導致Wget去下載為顯示這個頁面所有必要的文件和資源,包括內聯圖像、聲音、引用的樣式表等,以保證離線時能正確地顯示頁面。通常,當下載單個HTML頁面時,不會下載正確顯示它所需的任何必要的文檔。將“-r”和“-l”一起使用會有所幫助,但是由于Wget通常不區分外部文檔和內聯文檔,因此通常不會下載這些缺少需求的“葉子文檔”。下載頁面所有資源命令格式如下:
wget --page-requisites http://localhost/index.html(10)鏡像網站+離線瀏覽
Wget可以用來下載一個完整的站點,自動轉換頁面鏈接以支持離線瀏覽。使用的選項如下:
--mirror:開啟鏡像所需要的所有選項。
--no-parent:在遞歸檢索時,永遠不要提升到父目錄,只下載當前目錄結構下的文件。
--convert-links:將所有鏈接轉換成本地鏈接以便離線瀏覽。
--page-requisites:下載內聯樣式文件、圖片等所有必需的文件。
命令格式如下:
wget --mirror?--no-parent --convert-links --page-requisites http://localhost/ wget --recursive --level=inf --timestamping --no-parent --convert-links --page-requisites http://localhost/總結
以上是生活随笔為你收集整理的Wget下载网页与镜像网站的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ERP系统
- 下一篇: Linux 虚拟IP