JavaScript网络爬虫:Cheerio提取ref Node中价格data字段问题
解决方案
你获取到的price[i]是包裹了text节点的数组结构,目标data属性在数组第一个元素下,直接取值即可:
在你的循环内添加一行价格推入逻辑:
MKEUPrice.push(price[i][0].data);
如果想要更简洁且兼容性更强的写法,也可以直接用Cheerio封装的.text()方法读取元素文本,不需要手动操作原生节点:
- 把获取price的代码修改为:
let price = $('.price_color');
- 循环内读取价格的逻辑改为:
const currentPrice = $(price[i]).text().trim(); MKEUPrice.push(currentPrice); console.log(currentPrice);
最后返回给前端的对象里加上价格字段即可:
let arr = MKEUResults.map((res, idx) => { return {'name': res, "img": MKEUThumbs[idx], "price": MKEUPrice[idx]} });
可选优化:如果后续出现商品名称、图片、价格索引不匹配的问题,建议改为遍历每个商品父节点再分别提取对应字段,避免因为页面结构变动导致的错位问题。
内容的提问来源于stack exchange,提问作者Caio Ishikawa
相关产品推荐
相关产品推荐

