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

如何用Puppeteer提取表格每行第三单元格中的a标签?

Puppeteer抓取表格每行第三单元格内的a标签实现方案

核心思路

通过CSS选择器精准定位目标元素,或遍历表格行后逐个提取目标单元格内的a标签,两种方式均可满足需求。

方法一:用$$eval批量获取(推荐)

代码简洁高效,适合直接批量提取所有目标链接:

// 批量提取每行第三单元格内a标签的文本与链接
const targetLinks = await page.$$eval('table tr td:nth-child(3) a', elements => 
  elements.map(el => ({
    linkText: el.textContent.trim(),
    linkUrl: el.href
  }))
);

console.log(targetLinks);
  • 选择器说明:table tr td:nth-child(3) a 直接定位到表格下每行的第3个单元格内的a标签。
  • 若表格第一行是表头且用td标签,可修改选择器排除表头:table tr:not(:first-child) td:nth-child(3) a。

方法二:遍历表格行逐个处理(灵活度高)

适合需要对每行做额外判断或复杂处理的场景:

const tableRows = await page.$$('table tr');
const targetLinks = [];

for (const row of tableRows) {
  // 获取当前行第三单元格内的a标签元素
  const linkElement = await row.$('td:nth-child(3) a');
  if (linkElement) {
    // 提取文本与链接属性
    const linkText = await page.evaluate(el => el.textContent.trim(), linkElement);
    const linkUrl = await page.evaluate(el => el.href, linkElement);
    targetLinks.push({ linkText, linkUrl });
  }
}

console.log(targetLinks);

注意事项

  • 确保目标表格结构稳定,nth-child(3)依赖每行单元格的顺序,若页面动态渲染导致列顺序变化,需调整选择器。
  • 若a标签为动态加载,需先执行page.waitForSelector('table tr td:nth-child(3) a')等待元素加载完成后再提取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 08:54:18