You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Cheerio在网页<a>标签中检测多个关键词?

Cheerio 实现多关键词查找标签

Cheerio完全支持查找包含任一目标关键词的元素,以下是两种实用实现方法:

方法1:多:contains选择器组合

Cheerio兼容jQuery的选择器语法,用逗号分隔多个:contains()选择器,即可匹配满足任一关键词的标签:

修改后的核心代码片段:

// 替换原选择器,同时匹配含climate或environment的a标签
$('a:contains("climate"), a:contains("environment")').each(function(){
    const title = $(this).text().trim();
    const url = $(this).attr('href');
    articles.push({ title, url });
})

方法2:filter()自定义筛选(更灵活)

如果需要不区分大小写匹配、关键词数量较多,推荐用filter()方法自定义筛选逻辑:

$('a').filter(function() {
    // 统一转小写,避免大小写遗漏匹配
    const text = $(this).text().toLowerCase();
    return text.includes('climate') || text.includes('environment');
}).each(function(){
    const title = $(this).text().trim();
    const url = $(this).attr('href');
    articles.push({ title, url });
})

完整修复后的代码

注意:原代码中articles是全局变量,多次请求/news会导致数据重复,建议将其放在路由内部初始化:

const PORT = 8000;
const express = require('express');
const axios = require('axios');
const cheerio = require('cheerio');

const app = express();

app.get('/',(req,res)=>{
    res.json('Hello World')
})

app.get('/news',(req,res)=>{
    // 每次请求初始化数组,避免重复数据
    const articles = [];
    axios.get('https://www.tbsnews.net/bangladesh/environment/climate-change')
        .then((response)=>{
            const html = response.data;
            const $ = cheerio.load(html);

            // 使用方法1的多选择器
            $('a:contains("climate"), a:contains("environment")').each(function(){
                const title = $(this).text().trim();
                const url = $(this).attr('href');
                // 过滤空标题或空链接
                if(title && url){
                    articles.push({ title, url });
                }
            })
            res.json(articles)
        }).catch((err)=>console.log(err));
})

app.listen(PORT,()=>{console.log(`server running on Port ${PORT}`)});

内容的提问来源于stack exchange,提问作者Mohammad Mustak Absar Khan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 09:54:20