You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Bash中获取网页内容并去除HTML标签提取纯文本

实现Bash网页转纯文本输出的方案

你当前的实现只能获取到原始HTML源码,没有做标签解析转换,我们可以通过以下几种方式实现纯文本输出,按效果还原度从高到低排序:

  • 方案1:使用命令行浏览器lynx(推荐,排版还原度最高)
    lynx是经典的命令行网页浏览器,内置HTML解析渲染能力,可直接输出格式化后的纯文本内容,不会残留HTML标签。
    优化后的函数示例:
intro-cron() {
    URL=http://www.unixgeeks.org/security/newbie/unix/cron-1.html
    # -dump 参数直接输出页面纯文本,-nolist 隐藏页面末尾的链接索引列表
    lynx -dump -nolist "$URL"
}

如果系统没有预装lynx,用对应包管理器安装即可,比如Debian/Ubuntu系执行apt install lynx,RHEL/CentOS系执行yum install lynx。

  • 方案2:使用html2text专用转换工具
    如果你不需要模拟浏览器渲染,仅需要提取文本,html2text是更轻量的专用转换工具,会自动丢弃所有HTML标签,保留基础换行排版:
intro-cron() {
    URL=http://www.unixgeeks.org/security/newbie/unix/cron-1.html
    content=$(wget "$URL" -q -O -)
    echo "$content" | html2text
}

需要提前安装对应软件包,包名一般为html2text。

  • 方案3:无额外依赖的纯Shell简易实现
    如果你无法安装任何额外工具,可以用sed做简单的标签过滤,这种方式仅适合结构简单的静态页面,复杂页面可能出现排版错乱:
intro-cron() {
    URL=http://www.unixgeeks.org/security/newbie/unix/cron-1.html
    content=$(wget "$URL" -q -O -)
    echo "$content" | \
    sed 's/<br[^>]*>/\n/gI' | \
    sed 's/<p[^>]*>/\n\n/gI' | \
    sed 's/<[^>]*>//g' | \
    sed '/^[[:space:]]*$/d'
}

该脚本会先把<br>转换为换行、<p>转换为空行,再删除所有HTML标签,最后去掉多余空行。

内容的提问来源于stack exchange,提问作者YorSubs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 05:15:04