如何在没有 html 的情况下使用 wget 获取页面的文本?

Lun*_*oms 20 linux wget

如果我在网页上尝试 wget,我将获得该页面为 html。是否可以只检索没有关联 html 的文件的文本?(这对我来说是必需的,因为一些 HTML 页面包含带有 html 标签的 c 程序正在下载。我必须在浏览器中打开它并手动复制文本以制作 .c 文件。)

njs*_*jsg 28

wget只会检索文档。如果文档是 HTML,你想要的是解析文档的结果。

例如,lynx -dump -nolist如果您有 lynx ,您可以使用, 。

lynx是一个轻量级、简单的网络浏览器,它具有-dump用于输出解析过程的结果的功能。-nolist避免在最后出现链接列表,如果页面有任何超链接,就会出现链接列表。

正如@Thor 所提到的,elinks也可以用于此目的,因为它还有一个-dump选项(并且必须-no-references省略链接列表)。如果您使用 -sigh-frames (MTFBWY) 浏览某个站点,它可能特别有用。

另外,请记住,除非页面实际上只是带有 HTML 标记的 C 代码,否则您将需要检查结果,以确保那里只有 C 代码。


小智 11

如果您没有安装这些其他工具,只有 wget,并且页面没有格式,只有纯文本和链接,例如源代码或文件列表,您可以像这样使用 sed 剥离 HTML:

wget -qO- http://address/of/page/you/want/to/view/ | sed -e 's/<[^>]*>//g'
Run Code Online (Sandbox Code Playgroud)

这使用 wget 将页面源转储到 STDOUT 并使用 sed 去除任何 < > 对以及它们之间的任何内容。

然后,您可以使用 > 将 sed 命令的输出重定向到要创建的文件:

wget -qO- http://.../ | sed -e 's/<[^>]*>//g' > downloaded_file.txt
Run Code Online (Sandbox Code Playgroud)

注意:您可能会发现文件中有您不想要的多余空格(例如,行缩进了几列)

使用文本编辑器整理文件可能是最简单的(或在下载 C 源代码时使用源格式化程序)。

如果您需要对文件的每一行执行相同的简单操作,您可以在 sed 命令中包含一个命令来执行此操作(此处删除一个前导空格):

wget -qO- http://.../ | sed -e 's/<[^>]*>//g;s/^ //g' > downloaded_stripped_file.txt
Run Code Online (Sandbox Code Playgroud)