使用wget命令進行整站下載

pythontab發表於2013-02-05

網上流傳著各種整站下載的軟體,號稱軟體功能有多強大,但是結果不盡人意啊。其實我們手頭就有一個功能異常強大的工具 -- wget命令。以前就知道wget有做網站映象的功能,於是就折騰了一下,使用中遇到一些問題,最後得到了wget命令列:

wget -e robots=off -w 1 -x -np -p -m -k -t 1 -X/upload/ http://www.pythontab.com

為了讓這個命令列的各選項意義更加明確,它還可以寫成:

wget --execute robots=off --wait=1 --force-directories --no-parent --page-requisites --mirror --convert-links --tries=1 --exclude /upload/ http://www.pythontab.com

使用wget複製網站時的一些選項

下面對其中的各選項簡要說明,做備忘之用。

‘-e command’

‘--execute command’

用來執行額外的.wgetrc命令。就像vim的配置存在.vimrc檔案中一樣,wget也用.wgetrc檔案來存放它的配置。也就是說在wget執行之前,會先執行.wgetrc檔案中的配置命令。一個典型的.wgetrc檔案可以參考:

使用者可以在不改寫.wgetrc檔案的情況下,用-e選項指定額外的配置命令。如果想要制定多個配置命令,-e command1 -e command2 ... -e commandN即可。這些制定的配置命令,會在.wgetrc中所有命令之後執行,因此會覆蓋.wgetrc中相同的配置項。

這裡robots=off是因為wget預設會根據網站的robots.txt進行操作,如果robots.txt裡是User-agent: * Disallow: /的話,wget是做不了映象或者下載目錄的,使用-e robots=off引數即可繞過該限制。

-w seconds

--wait=seconds

為了不給被複製的映象網站帶來太大的訪問壓力,頁面請求之間停下等待seconds時間。

-x

--force-directories

建立與映象網站對應的目錄結構。 http://www.example.com/robots.txt這個檔案下載下來時,會等到對應的www.example.com/robots.txt。與之相反的是-nd,即--no-directories,

-np

--no-parent

只下載給定的目錄下的檔案,不下載它的上級目錄中的檔案,即使有些頁面中存在上級目錄中檔案的連線。這個比較必要,如果不限定的話,本來只想下載www.example.com/blog/中的部落格文章,最後很有可能將整個www.example.com都下載下來了。

-p

--page-requisites

下載能顯示整個頁面需要的所有資源,包括內嵌的image以及css樣式檔案。

-m

--mirror

它會開啟映象相關的選項,比如無限深度的子目錄遞迴下載。

-k

--convert-links

這個選項會在整個網站下載完成後修HTML、CSS、Image等資源的連結關係,讓它們都指向下載下來的本地檔案,從而適合本地瀏覽。

-t times

--tries=times

如果某個資源下載失敗,這個選項指定了重試下載的次數。.wgetrc預設的是20次。我們在下載網站時可以將其放小,一則減少下載時間,二則減輕映象站點的壓力。

-X /some/dir

--exclude /some/dir

可以用這個引數指定不需要下載的目錄,如果有多個需要排除的目錄,可以用逗號隔開,比如

-X /some/dir1;/some/dir2

  


相關文章