html - Nodejs:从 HTML 获取纯文本但保留有序和无序列表
问题描述
我试图从一段 HTML 代码中获取纯文本,但想保留有序或无序列表中的编号。到目前为止,node-html-parser和cheerio等库还没有保留这些信息。
意思是说,给定这样的 HTML:
<ol>
<li>Number 1
<ol style="list-style-type: lower-alpha;">
<li>Number a</li>
<li>Number b</li>
</ol>
</li>
<li>Number 2
<ol style="list-style-type: lower-alpha;">
<li>Number a
<ol style="list-style-type: lower-roman;">
<li>Number i</li>
<li>Number ii</li>
</ol>
</li>
<li>Number b</li>
<li>Number c</li>
</ol>
</li>
</ol>
我想获得:
1. Number 1
a. Number a
b. Number b
2. Number 2
a. Number a
i. Number i
ii. Number ii
b. Number b
c. Number c
我用 Nodejs 编写。
解决方案
import {
parse
} from 'node-html-parser';
var html = `<ol>
<li>Number 1
<ol style="list-style-type: lower-alpha;">
<li>Number a</li>
<li>Number b</li>
</ol>
</li>
<li>Number 2
<ol style="list-style-type: lower-alpha;">
<li>Number a
<ol style="list-style-type: lower-roman;">
<li>Number i</li>
<li>Number ii</li>
</ol>
</li>
<li>Number b</li>
<li>Number c</li>
</ol>
</li>
</ol>`
const root = parse(html);
var children = root.querySelector('ol')
var m = children.innerHTML
var lis = parse(m)
var m = lis.text
console.log(JSON.stringify(m))
输出将是
</p>
Number 1
Number a
Number b
Number 2
Number a
Number i
Number ii
Number b
Number c
推荐阅读
- sql - 在 Redshift 物化视图中使用 current_date
- assembly - 你能在 MARS 软件中将代码从 c++ 传递到汇编语言吗?
- sql - 存储过程插入和更新语句工作但受影响的行是-1?
- inno-setup - Inno Setup - 将自定义按钮与取消按钮对齐
- kubernetes - Kubernetes:在应用命令中指定集群上下文
- mysql - 是否可以使用公共 IP 将 WordPress 网站(托管在 GoDaddy 上)连接到 Google Cloud Platform 实例?
- session - HttpServletRequest 获取新会话
- flask - Flask/Connexion 应用 XHR PUT TypeError:缺少 1 个必需的位置参数
- .net - 用于 VB Windows/桌面应用程序的 RsaProtectedConfigurationProvider
- c - C中的函数组合,我不确定如何传入仍然需要计算的参数