如何在没有 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

相关内容