Mount

將網頁視為目錄

  • January 4, 2016

我是 Mac 使用者,我想訪問cd網頁,然後將cp一些文件放到本地目錄中。有沒有辦法做到這一點?

這是我指的頁面:http ://www0.cs.ucl.ac.uk/staff/M.Herbster/GI07/week5/

就像他在回復中提到的DisplayName一樣,您無法cd進入網站。cd命令僅在本地電腦上的目錄中有效,如果不與其他命令一起使用以遠端訪問像ssh這樣的電腦。你需要一個像wgetcurl這樣的命令來從網上下載一些東西。除了curl範例之外,您還可以像這樣使用wget

下載某個文件 從該目錄下載

wget http://www0.cs.ucl.ac.uk/staff/M.Herbster/GI07/week5/dtrain123.dat

具有特定文件副檔名的文件 從該目錄

wget -rl1 -A .dat http://www0.cs.ucl.ac.uk/staff/M.Herbster/GI07/week5/

下載所有文件

wget -r -np -l1 http://www0.cs.ucl.ac.uk/staff/M.Herbster/GI07/week5/

命令選項的解釋:

-r 遞歸下載(小心!)

  • 允許的文件副檔名的逗號分隔列表

-l 遞歸的最大深度,而“inf”或“0”表示無限。

-np 省略父目錄

使用的 url 指的是你提到的 url

一般來說,不可能像目錄一樣瀏覽網站,因為沒有標準的方法來列出目錄中的文件。事實上,網路上連目錄的概念都沒有:是否在一個叫的目錄中http://foo/bar/wibble服務一個叫的文件是伺服器設計的問題,不一定非要如此。根據斜杠的數量(例如和返回不同的內容),也可能有不同的內容,這不能表示為文件路徑樹。wibble``bar``http://foo/bar/wibble``http://foo/bar/wibble/``http://foo/bar//wibble

請注意,與其他人在這裡聲稱的不同,可以像瀏覽本地文件一樣導航遠端文件。例如,cd如果你掛載它,你可以進入一個 FTP 站點;這樣做的方法包括OS X上的Macfusion 、帶有 Gnome 的 Linux 上的gvfs-mount 、 Linux 或 OS X 上的curlftpfs和AVFS。所有這些都通過FUSE工作,這是一個框架,基本上可以將任何內容公開為目錄樹。

但是,沒有將 Web 伺服器公開為目錄樹的通用方法,因為它實際上並沒有這種樹結構。此外,對同一個 URL 的請求可以返回不同的內容(基於客戶端的語言首選項、使用者代理、cookie 等)。

當您訪問某些 URL 時,您想要的伺服器恰好提供一個看起來像目錄列表的頁面。但是該頁面是在伺服器上格式化的,它不像您的瀏覽器在訪問 FTP 站點時那樣格式化。原則上,客戶端可以對其進行解析並生成目錄列表;例如,有一個httpfs可以做到這一點,但它只支持以特定方式格式化伺服器站點上的目錄列表的輸出。實際上有一個通過 HTTP 訪問目錄樹的標準協議 ——WebDAV——但它並不經常使用。我不知道解析 Apache 的標準目錄列表的實現,我認為這是您的站點所服務的。

如果要在命令行上下載文件,可以使用curl. 如果要下載目錄中的所有文件,可以使用wget(不包含在 OSX 中,但可以通過包管理器安裝):

wget -r -np -l1 http://www0.cs.ucl.ac.uk/staff/M.Herbster/GI07/week5/

wget -r -np http://…類似於cp -r http://… .,但遞歸的工作方式不同。cp通過列舉目錄中的文件來複製目錄,包括遞歸操作的子目錄,並通過創建具有相同內容的文件來複製正常文件。在網路上,目錄和普通文件沒有區別;wget通過跟踪 HTML 頁面中的所有連結進行遞歸。該選項-r告訴wget以遞歸方式複制,並-np告訴它不要跟隨指向“向上”的連結——這是一個文本問題:它只跟隨目標以開頭的連結http://www0.cs.ucl.ac.uk/staff/M.Herbster/GI07/week5/(具有實現相同結果的相對連結的規則)。選項-l1告訴它在一個級別後停止遞歸是一種額外的安全性(即它遵循來自給定 URL 的 HTML 文件的連結,然後停止);這不是必需的,但建議避免由於您沒有註意到的額外連結而導致遞歸下載為您提供比最初預期更多的材料的情況。

引用自:https://unix.stackexchange.com/questions/253033