node.js - Cheerio 如何获得与其他标签同级的文本节点
问题描述
我很久以前就解决了这个问题,但我现在忘记了。当我的主要选择器是时,我如何访问该日期
$('.date')
let cheerio = require('cheerio')
let html = `
<html>
<body>
<span class="date">
<span class="category">Article</span>
Sat, 22 Jan 2021 11:12
</span>
</body>
</html>`
let $ = cheerio.load(html)
// Empty
console.log($('.date').next().text())
// Empty
console.log($($('.date').children()[0]).next().next().text())
// Empty
console.log($($('.date').children()[0]).next().text())
// Empty
$('.date').each(el => { console.log($(el).text())})
解决方案
@Dario 的进一步评论:
内容()函数:
获取匹配元素集中每个元素的子元素,包括文本和注释节点。
所以你可以这样做:
let cheerio = require('cheerio')
let html = `
<html>
<body>
<span class="date">
<span class="category">Article</span>
Sat, 22 Jan 2021 11:12
</span>
</body>
</html>`
let $ = cheerio.load(html)
let val = $('.date').contents().last().text()
console.log(val.trim())
// prints Sat, 22 Jan 2021 11:12
推荐阅读
- javascript - 按 $project 字段聚合和 $lookup
- php - Laravel Eloquent Query 使用 withCount 和 get([name as value])
- android - 迁移到 AndroidX 后无法实现 Room 库
- python - 有没有办法选择从线条图像形成的直方图的正确峰值?
- javascript - 由于 Access/Loaded Hook 的上下文对象中缺少模型实例,无法更改所需的属性值(LoopBack3)
- python - 我已经制作了一些代码来为 ascii 艺术的多行 RLE 进行 rle 压缩,但解码器无法解码多行代码
- php - Blogger v3 api post image with cotenet with php
- regex - 将纯文本推文转换为包含超链接
- amazon-web-services - Dynatrace 增加了额外的 90MB
- regex - 熊猫提取具有可选模式的子字符串