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

如何在Cheeriogs中使用contains匹配href实现稳定的URL抓取

错误原因

你使用的:contains()是文本匹配选择器,仅用于筛选元素内部文本包含指定内容的节点,不能用于匹配href等属性的值,所以写法不生效。

正确实现方法

推荐方案:属性前缀匹配选择器

你要匹配href以/en/predictions-tips开头的a标签,直接用CSS属性前缀匹配语法[attr^=value]即可,该语法在Cheeriogs中完全兼容,且匹配精度更高,同时可以去掉冗余的DOM层级依赖,进一步提升稳定性。
修改后的代码如下:

const contentText = UrlFetchApp.fetch(url).getContentText();
const $ = Cheerio.load(contentText);

// 仅通过class和href规则匹配,不依赖DOM层级结构
const targetLink = $('a.tnmscn[href^="/en/predictions-tips"]');
const matchedHref = targetLink.attr('href').trim();
Logger.log(matchedHref);

如果需要保留原有层级做范围限定,可将选择器调整为如下写法,去掉了严格的直接子元素匹配符>,降低DOM结构微调带来的失效风险:

div.schema div.tnms a.tnmscn[href^="/en/predictions-tips"]

扩展方案:自定义规则过滤

如果后续需要更复杂的href匹配逻辑(比如正则校验),可以用filter方法实现:

const targetLink = $('a.tnmscn').filter(function() {
  return $(this).attr('href')?.startsWith('/en/predictions-tips')
})

内容的提问来源于stack exchange,提问作者Digital Farmer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 02:45:01