Cheerio:使用分隔符从 HTML 中提取文本
Cheerio: Extract Text from HTML with separators
假设我有以下内容:
$ = cheerio.load('<html><body><ul><li>One</li><li>Two</li></body></html>');
var t = $('html').find('*').contents().filter(function() {
return this.type === 'text';
}).text();
我得到:
OneTwo
而不是:
One Two
这与我 $('html').text()
得到的结果相同。所以基本上我需要的是注入一个分隔符,比如 </code> (space) 或 <code>\n
注意:这不是 jQuery 前端问题,更像是 Cheerio 和 HTML 解析的 NodeJS 后端相关问题。
这似乎可以解决问题:
var t = $('html *').contents().map(function() {
return (this.type === 'text') ? $(this).text() : '';
}).get().join(' ');
console.log(t);
结果:
One Two
只是稍微改进了我的解决方案:
var t = $('html *').contents().map(function() {
return (this.type === 'text') ? $(this).text()+' ' : '';
}).get().join('');
您可以使用 TextVersionJS 包生成 html 字符串的纯文本版本。您可以在浏览器和 node.js 中使用它。
var createTextVersion = require("textversionjs");
var yourHtml = "<h1>Your HTML</h1><ul><li>goes</li><li>here.</li></ul>";
var textVersion = createTextVersion(yourHtml);
从 npm 下载并使用 Browserify 要求它。
您可以使用以下函数从由 whitespace
分隔的 html 中提取文本:
function extractTextFromHtml(html: string): string {
const cheerioStatic: CheerioStatic = cheerio.load(html || '');
return cheerioStatic('html *').contents().toArray()
.map(element => element.type === 'text' ? cheerioStatic(element).text().trim() : null)
.filter(text => text)
.join(' ');
}
假设我有以下内容:
$ = cheerio.load('<html><body><ul><li>One</li><li>Two</li></body></html>');
var t = $('html').find('*').contents().filter(function() {
return this.type === 'text';
}).text();
我得到:
OneTwo
而不是:
One Two
这与我 $('html').text()
得到的结果相同。所以基本上我需要的是注入一个分隔符,比如 </code> (space) 或 <code>\n
注意:这不是 jQuery 前端问题,更像是 Cheerio 和 HTML 解析的 NodeJS 后端相关问题。
这似乎可以解决问题:
var t = $('html *').contents().map(function() {
return (this.type === 'text') ? $(this).text() : '';
}).get().join(' ');
console.log(t);
结果:
One Two
只是稍微改进了我的解决方案:
var t = $('html *').contents().map(function() {
return (this.type === 'text') ? $(this).text()+' ' : '';
}).get().join('');
您可以使用 TextVersionJS 包生成 html 字符串的纯文本版本。您可以在浏览器和 node.js 中使用它。
var createTextVersion = require("textversionjs");
var yourHtml = "<h1>Your HTML</h1><ul><li>goes</li><li>here.</li></ul>";
var textVersion = createTextVersion(yourHtml);
从 npm 下载并使用 Browserify 要求它。
您可以使用以下函数从由 whitespace
分隔的 html 中提取文本:
function extractTextFromHtml(html: string): string {
const cheerioStatic: CheerioStatic = cheerio.load(html || '');
return cheerioStatic('html *').contents().toArray()
.map(element => element.type === 'text' ? cheerioStatic(element).text().trim() : null)
.filter(text => text)
.join(' ');
}