使用Cheerio筛选指定类名div提取img的title属性失败如何解决?
问题原因
你写法存在语法错误:已经通过cheerio.load(html)将页面源码挂载到$实例后,选择元素不需要额外传第二个参数html作为上下文,多余的参数会导致选择逻辑异常,匹配不到目标元素。
修复后的实现代码
const axios = require('axios'); const cheerio = require('cheerio'); axios.get("https://cryptoradar.co/exchanges") .then(response => { const html = response.data; const $ = cheerio.load(html); // 直接用类选择器筛选所有目标div,不需要写完整层级 $('.exchange-card-small-logo').each(function () { // 提取该div下a>img的title属性 const imgTitle = $(this).find('a > img').attr('title'); if(imgTitle) { console.log(imgTitle); } }); }) .catch(err => console.log('请求出错:', err));
附加说明
如果修改后仍然匹配不到元素,说明该类元素是页面加载后通过客户端JS动态渲染生成的,axios直接请求拿到的初始HTML源码里不存在该元素。这种场景下你需要使用Puppeteer、Playwright之类的无头浏览器工具,等待页面JS执行完成渲染出元素后再做提取。
内容的提问来源于stack exchange,提问作者ppp
相关产品推荐
相关产品推荐

