我正在 Node.js
中构建一个抓取工具并遇到了一个小问题。我正在尝试构建一个获取元素文本的函数,无论它是否嵌入在 <p>
中标记,在 <span>
中或者只是一个 <div>
里面有文字。
以下内容目前仅适用于 <p>
中包含的文本标签:
function getDescription(product){
var text =[];
$('.description *')
.each(function(i, elem) {
var dirty = $(this).text();
var clean = sanitize(dirty).trim();
if (clean.length){
text.push(clean);
}
});
text.join(',');
sanitize(text).trim();
return text;
}
这适用于这样的代码:
<div class="description">
<p>Test test test</p>
</div>
但不适用于此:
<div class="description">
Test test test
</div>
作为引用,sanitize
和 trim
函数是 Node Validator
的一部分,但这与我的问题不是特别相关 - 他们只是获取一个字符串并从中删除空格。
关于我可以做些什么来使一个函数对两个实例都起作用有什么想法吗?雪上加霜的是,我的限制稍微有限一点 node
使用 cheerio
复制 jQuery
的一些功能的库,但不是全部。
最佳答案
使用.contents()而不是 *
function getDescription(product){
var text =[];
$('.description').contents()
.each(function(i, elem) {
var dirty = $(this).text();
var clean = sanitize(dirty).trim();
if (clean.length){
text.push(clean);
}
});
text.join(',');
sanitize(text).trim();
return text;
}
关于javascript - 获取元素的子文本的方法,无论是否在 <p> 标记中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17191428/