HTML转ANSI彩色终端文本

25

我使用Linux,想要从网上获取一个HTML页面并在终端上输出它。我发现html2text可以做到这一点,但它会将我的HTML转换成纯文本,而我更希望将其转换为类似于ls --color=auto的ANSI彩色文本。有什么好的想法吗?

3个回答

19

elinks浏览器可以实现此功能。其他文本浏览器,如lynxw3m也可能能够实现。

elinks -dump -dump-color-mode 1 http://example.com/

以上示例提供了一个使用16种颜色的文本版本http://example.com/。根据需要,输出格式可以进一步自定义。

-dump选项启用转储模式,它只会以文本形式打印整个页面,并以一种“电子邮件样式”打印链接目的地。

-dump-color-mode 1启用使用16种基本终端颜色对输出进行着色。根据值和终端仿真器的功能,这可以高达~16百万(True Color)。这些值在elinks.conf(5)中有文档记录。

用于输出的颜色也可以进行配置,这同样在elinks.conf(5)中有文档记录。


请注意,elinks不会自动重置终端颜色,这会导致后续输出(从脚本或终端)与elinks输出的结尾颜色相同,直到遇到新的颜色代码为止。在elinks之后手动执行tput sgr0以进行重置。 - Marijn

0

您可以使用lynx浏览器通过此命令输出文本。

lynx -dump http://example.com

7
有没有办法让 lynx -dump 输出的内容也包含颜色?至少在我的发行版上,lynx 是编译在 ncurses 上的,并完全使用 ncurses 来决定何时使用颜色;我无法让它输出带颜色的结果。 - sarnold
我尝试了 lynx -dump somefile.html < <( echo -n qj) > out; cat out 以及其他变体,但都没有成功。只是想让你知道这也不起作用。所以除非你破解 ncurses……但是安装 elinks 可能又会少些麻烦。;) - anon

0

1
好的,lynx 也可以,但我只需要输出页面而不需要浏览它。 - Sergey
1
你不需要这样做。w3m也有类似于-dump的选项,elinks也一样。只是选择你最舒适的那一个就行了。 - davrieb
2
@davrieb,你有什么办法可以让浏览器以彩色输出? - sarnold
@sarmold:不是凭空想象的,但是是的。我会在单独的回答中提供详细信息以获得更好的发现性。 - davrieb
@davrieb,w3m [0.5.3, 2018] -dump 可以抑制彩色输出。 - fche

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接