我知道以前有人问过这个问题,但我找不到node.js的好答案
我需要服务器端提取的纯文本(没有标签,脚本等)从HTML页面是提取。
我知道如何在客户端使用jQuery(获取body标记的.text()内容),但不知道如何在服务器端做到这一点。
我试过https://npmjs.org/package/html-to-text,但它不能处理脚本。
var { convert } = require('html-to-text');
var request = require('request');
request.get(url, function (error, result) {
var text = convert(result.body, {
wordwrap: 130
});
});
字符串
我试过phantom.js,但找不到一种方法来获取纯文本。
5条答案
按热度按时间iklwldmw1#
使用jsdom和jQuery(服务器端)。
使用jQuery,你可以删除所有脚本、样式、模板等,然后你可以提取文本。
示例
(This未使用jsdom和node进行测试,仅在Chrome中进行)
字符串
ylamdve62#
对于那些寻找正则表达式解决方案的人,下面是我的解决方案
字符串
w8ntj3qf3#
正如另一个答案所建议的,使用JSDOM,但不需要jQuery。试试这个:
字符串
ha5z0ras4#
您可以使用TextVersionJS(http://textversionjs.com)生成HTML字符串的纯文本版本。它是纯JavaScript(有大量的RegExp),所以你可以在浏览器和node.js中使用它。
这个库可以满足你的需要,但是它和在浏览器中获取元素的文本是不一样的。它的目的是创建HTML电子邮件的文本版本。这意味着包括图像等内容。例如,给定以下HTML和代码片段:
字符串
变量
plainText
将包含以下字符串:型
请注意,它会正确地忽略脚本标记。你可以在GitHub上找到最新版本的source code。
ebdffaop5#
为什么不直接获取body标签的textContent呢?
字符串