NodeJS中从HTML字符串中获取所有文本内容

the*_*oli 7 html javascript parsing node.js

我只需要从 HTML 字符串中获取文本内容,并用空格或换行符分隔不同元素的文本内容。

例如,HTML 字符串可能是:

<ul>
  <li>First</li>
  <li>Second</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

我想要的是:

First Second
Run Code Online (Sandbox Code Playgroud)

或者

First
Second
Run Code Online (Sandbox Code Playgroud)

我尝试通过首先将整个字符串包装在 a 中div,然后使用textContent第三方库来获取文本内容。但是,我特别需要的不同元素的文本内容之间没有空格或换行符(即我得到的FirstSecond不是我想要的)。

我现在想到的唯一解决方案是制作一个 DOM 树,然后应用递归来获取包含文本的节点,然后将该元素的文本附加到带有空格的字符串中。还有比这更干净、更整洁、更简单的解决方案吗?

Ram*_*did 6

将 HTML 转换为纯文本:

在您的终端中,安装html-to-textnpm 包:

npm install html-to-text

然后在JavaScript中::

const { convert } = require('html-to-text'); // Import the library

var htmlString = `
<ul>
  <li>First</li>
  <li>Second</li>
</ul>
`;

var text = convert(htmlString, { wordwrap: 130 })
// Out:
// First
// Second
Run Code Online (Sandbox Code Playgroud)
  • 希望这可以帮助!