如果我在网页上尝试 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