如何在沒有 html 的情況下使用 wget 取得頁面文字?

如何在沒有 html 的情況下使用 wget 取得頁面文字?

如果我在網頁上嘗試 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

相關內容