2014-05-03 40 views
91

我有權訪問在線HTTP目錄。我試圖通過wget下載所有的子目錄和文件。但問題是,當wget下載子目錄時,它會下載包含該目錄中文件列表的index.html文件,而不會自行下載文件。 有沒有辦法下載沒有深度限制的子目錄和文件(就好像我想下載的目錄只是一個我想要複製到我的計算機的文件夾)。如何下載所有文件和子目錄的HTTP目錄,因爲它們出現在在線文件/文件夾列表中?

online HTTP directory

回答

160

解決方案

wget -r -np -nH --cut-dirs=3 -R index.html http://hostname/aaa/bbb/ccc/ddd/ 

說明:

  • 它會下載DDD目錄下的所有文件和子文件夾:
  • 遞歸(-R),
  • 不打算上的目錄,如CCC/...(-NP),
  • 沒有將文件保存到主機名的文件夾(-NH),
  • 但通過省略 第3個文件夾AAA DDD,BBB,CCC(--Cut -dirs = 3)
  • 排除的index.html 文件(index.html的-R)

參考:http://bmwieczorek.wordpress.com/2008/10/01/wget-recursively-download-all-files-from-certain-directory-listed-by-apache/

+4

謝謝!此外,根據[this](http://unix.stackexchange。com/questions/53397/wget-how-to-download-recursively-and-only-specific-mime-types-extensions-ie)你可以像'-R css'一樣使用'-R'來排除所有的CSS文件,或者像'-A pdf'一樣使用'-A'來只下載PDF文件。 – John

+1

它就像一個魅力,謝謝你。這應該被選爲答案 –

+2

謝謝!來自[wget man page]的其他建議(https://www.gnu.org/software/wget) '從Internet服務器下載時,請考慮使用'-w'選項在訪問服務器之間引入延遲。下載需要一段時間,但服務器管理員不會因爲你的無禮而感到驚慌.' – jgrump2012

25

我能得到利用VisualWGet感謝to this post這個工作。它對我很好。重要的部分似乎是檢查-recursive標誌(見圖)。

此外,還發現-no-parent標誌很重要,否則它會嘗試下載所有內容。

enter image description here enter image description here

+1

剛剛發現這一點 - 2017年十二月它工作正常。我在https://sourceforge.net/projects/visualwget/得到它 – SDsolar

+1

在Windows機器上運行良好,不要忘記檢查答案中提到的選項,否則它將無法工作 – csharpcoder

2

wget是非常寶貴的資源和東西我使用自己。但是有時在地址中有wget標識爲語法錯誤的字符。我確信有一個解決方案,但因爲這個問題沒有具體詢問wget我認爲我會爲那些毫無疑問會偶然發現這個頁面的人提供一個替代方案,尋找一個快速修復而不需要學習曲線。

有幾個瀏覽器擴展可以做到這一點,但大多數需要安裝下載管理器,這些並不總是免費的,往往是一個眼睛,並使用大量的資源。下面這些缺點沒有這些缺點:

「下載主」是谷歌瀏覽器的擴展,它非常適合從目錄下載。您可以選擇過濾要下載的文件類型,或下載整個目錄。

https://chrome.google.com/webstore/detail/download-master/dljdacfojgikogldjffnkdcielnklkce

用於將上行最新功能列表等信息,請訪問開發者的博客上的項目頁面:

​​

1
wget -r -np -nH --cut-dirs=3 -R index.html http://hostname/aaa/bbb/ccc/ddd/ 

man wget

'-r' ' - 遞歸' 打開遞歸檢索。有關更多詳細信息,請參閱遞歸下載。默認的最大深度是5

「-np」 「--no-父」 遞歸檢索時,千萬不要上升到父目錄。這是一個有用的選項,因爲它保證只有特定層次下的文件纔會被下載。有關更多詳細信息,請參閱基於目錄的限制。

「-nH」 「--no宿主目錄」 禁止代主機爲前綴的目錄。默認情況下,使用'-r http://fly.srk.fer.hr/'調用Wget將創建一個以fly.srk.fer.hr/開頭的目錄結構。該選項禁用這種行爲。

'--cut-dirs = number' 忽略號碼簿組件。這對於獲取對遞歸檢索將被保存的目錄進行細粒度控制很有用。

以「ftp://ftp.xemacs.org/pub/xemacs/」的目錄爲例。如果您使用'-r'檢索它,它將在ftp.xemacs.org/pub/xemacs/下保存在本地。雖然'-nH'選項可以刪除ftp.xemacs.org/部分,但仍然被pub/xemacs卡住。這就是'cut-dirs'派上用場的地方;它使Wget不會「看到」多個遠程目錄組件。以下是'--cut-dirs'選項如何工作的幾個示例。

無選項 - > ftp.xemacs.org/pub/xemacs/ -nH - >酒館/ xemacs的/ -nH --Cut-顯示目錄= 1 - > xemacs的/ -nH --Cut-迪爾斯= 2 - >。

--Cut - 迪爾斯= 1 - > ftp.xemacs.org/xemacs/ ... 如果你只是想擺脫的目錄結構,這個選項是類似的組合「-nd」和'-P'。但是,與'-nd'不同,'--cut-dirs'不會與子目錄一起丟失 - 例如,'-nH --cut-dirs = 1',beta /子目錄將被放置到xemacs/beta中,如人們會期待。

+2

一些解釋會很好。 –

+0

man wget ......? – sloven

0

無需插件!

使用書籤。拖動this link的書籤,然後轉到頁(從那裏你要下載的文件),然後編輯並粘貼此代碼:

(function(){ var arr=[], l=document.links; var ext=prompt("select extension for download (all links containing that, will be downloaded.", ".mp3"); for(var i=0; i<l.length; i++) { if(l[i].href.indexOf(ext) !== false){ l[i].setAttribute("download","download"); l[i].click(); } } })(); 
相關問題