如何在Cheerio中选择带有aria-label属性的<a>标签?

3

我目前正在构建一个爬虫,根据我想要的关键字(例如“环境”和“气候”)从报纸网站上抓取数据。但是最近我遇到了一个网站,无法简单地检查文本是否包含我想要的关键字。它的 HTML 是这样写的:

<a aria-label="Ravaged by floods, Bangladesh pitches plan to adapt to climate impacts" class="card-with-image-zoom" href="https://en.prothomalo.com/environment/climate-change/ravaged-by-floods-bangladesh-pitches-plan-to-adapt-to-climate-impacts">

以下是我使用Cheerio查找关键词的方法:

 const html = response.data;
            const $ = cheerio.load(html);
            const specificarticles = [];
$('a:contains("climate"),a:contains("environment")',HTML)

如何使用Cheerio检查此特定HTML中关键字的可用性?

你可以使用 .getAttribute() 方法来获取 <a> 标签中 aria-label 的值。然后检查该字符串是否包含关键词。如果是,你需要将文章的超链接存储起来。 - Shilly
1个回答

3
如果使用普通选择器,请尝试。
$("a[aria-label]") 

适用于所有人

$("a[aria-label*=Bangladesh]") 

例如,要获取一个包含“孟加拉国”一词的文件。

“contains”是用来查找什么的?你确定它可以访问属性吗? - mplungjan
使用我的当前代码,我已经访问了其他网站,但现在当我尝试访问这个网站的属性(网站:https://en.prothomalo.com/environment/climate-change/)时,它找不到任何内容。 - Mohammad Mustak Absar Khan
https://github.com/cheeriojs/cheerio#-selector-context-root- - mplungjan
应该可以工作:https://stackoverflow.com/questions/55600513/cheerio-attributestartswith-selector - mplungjan
它只有在页面完全渲染后才能正常工作。内容是通过Ajax加载的。 - mplungjan
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接