Cheerio遍历结构下如何获取$(this)子元素内a标签的href属性值
Cheerio 嵌套层级元素属性提取实现方案
现有遍历逻辑完全不需要改动,只需要在目标单元格的处理分支内,补充嵌套a标签的定位和属性读取代码即可。
可直接套用的代码片段
在i == 1对应的处理分支中,直接写入取值逻辑:
if( i == 1 ){ // 从当前td的所有后代节点中查找a标签 const innerATag = $(this).find('a'); // 加非空判断,避免单元格内没有a标签时报错 const targetHref = innerATag.length > 0 ? innerATag.attr('href') : null; }
整合到原代码的完整版本:
let outputTableBody = $('.box.table-quotes table.table tr').each(function(i, elem) { let expression = $(this).children('td:nth-child(1)').text(); if(expression == companyNameArray[ExchangeNameParse]){ $(this).children('td').each(function(i, elem) { if( i == 1 ){ const innerATag = $(this).find('a'); const targetHref = innerATag.length > 0 ? innerATag.attr('href') : null; // 自行处理提取到的targetHref值即可 } }) } })
核心方法说明
针对你关心的「通过$(this)选中节点后,如何获取内部嵌套元素的属性值」,核心要理清两个选择方法的差异:
.children(选择器):仅匹配当前节点的直接第一级子元素,不会向下穿透嵌套层级,适合选紧邻的直接子节点.find(选择器):会遍历当前节点下的所有后代层级,不管目标元素嵌了多少层容器(比如td里面套了span、div再放a标签)都能稳定选中,和之前用.text()提取全层级文本的适配性一致,不会因为嵌套结构复杂漏选- 定位到目标元素后,统一用
.attr('属性名')方法读取对应属性值即可,不管是a标签的href、img标签的src,调用逻辑完全一致。
内容的提问来源于stack exchange,提问作者Mikhail Krivosheev
相关产品推荐
相关产品推荐

