如果我在網頁上嘗試 wget,我會得到 html 頁面。是否可以只檢索沒有關聯 html 的文件文字? (這對我來說是必需的,因為一些包含 c 程式的 HTML 頁面是透過 html 標籤下載的。我必須在瀏覽器中打開它並手動複製文字以製作 .c 檔案。)
答案1
wget
只會檢索文件。如果文件是 HTML 格式,那麼您想要的是解析文件的結果。
例如,lynx -dump -nolist
如果您周圍有山貓,您可以使用 。
lynx
是一個輕量級、簡單的網頁瀏覽器,它具有-dump
用於輸出解析過程的結果的功能。-nolist
避免最後出現連結列表,如果頁面有任何超鏈接,則會出現該連結列表。
正如@Thor 所提到的,elinks
也可以用於此目的,因為它還有一個-dump
選項(並且必須-no-references
省略連結列表)。如果您使用 -sigh-frames (MTFBWY) 走過某些站點,它可能特別有用。
另外,請記住,除非頁面實際上只是帶有 HTML 標記的 C 程式碼,否則您需要檢查結果,以確保那裡除了 C 程式碼之外沒有任何東西。
答案2
如果您沒有安裝這些其他工具,只安裝了 wget,並且頁面沒有格式,只有純文字和鏈接,例如原始程式碼或文件列表,您可以使用 sed 剝離 HTML,如下所示:
wget -qO- http://address/of/page/you/want/to/view/ | sed -e 's/<[^>]*>//g'
這使用 wget 將頁面來源轉儲到 STDOUT,並使用 sed 刪除任何 < > 對以及它們之間的任何內容。
然後,您可以使用 > 將 sed 命令的輸出重新導向到要建立的檔案:
wget -qO- http://.../ | sed -e 's/<[^>]*>//g' > downloaded_file.txt
注意:您可能會發現文件中有您不想要的額外空格(例如,行縮排了幾列)
使用文字編輯器整理文件可能是最簡單的(或在下載 C 原始碼時使用來源格式化程式)。
如果您需要對檔案的每一行執行相同的簡單操作,您可以在 sed 命令中包含一個命令來執行此操作(此處刪除一個前導空格):
wget -qO- http://.../ | sed -e 's/<[^>]*>//g;s/^ //g' > downloaded_stripped_file.txt
答案3
只是為了添加另一個工具。我更喜歡w3m
,它是一個lynx
類似控制台的瀏覽器。您可能會想查看系統上已有的功能。
w3m -dump website.html