使用Cheerio爬取网页时多选择器组合无输出,求排查问题
问题分析与解决
嘿,我一眼就看出问题在哪啦!你写的 $('a.text--title' , 'div.artist-name') 其实是 Cheerio 的上下文选择器用法——它的意思是:在 div.artist-name 这个上下文(父容器)里查找 a.text--title 元素。如果你的页面里没有这种嵌套关系,自然就找不到任何元素,所以才会没有输出。
要同时选择 a.text--title 和 div.artist-name 这两类元素,你需要把两个选择器放在同一个字符串里,用逗号分隔(这是 CSS 选择器的标准语法),表示“匹配任意一个选择器的元素”。
修改后的代码
$('a.text--title, div.artist-name').each(function(i, element) { var mailoutput = $(this).text(); console.log(mailoutput); });
额外小提示
如果之后你需要区分当前遍历的元素是标题还是艺术家名称,可以通过判断标签名或者类名来做针对性处理:
$('a.text--title, div.artist-name').each(function(i, element) { const $el = $(this); let content = $el.text(); if ($el.is('a.text--title')) { console.log('标题:', content); } else if ($el.is('div.artist-name')) { console.log('艺术家:', content); } });
内容的提问来源于stack exchange,提问作者AAaaAA
相关产品推荐
相关产品推荐

