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

Puppeteer获取指定选择器href属性返回全null如何解决

错误原因

你的代码存在以下问题导致返回全null结果:

  • 核心逻辑错误:选择器匹配的目标是div元素,href是<a>标签的专属属性,div本身不存在这个属性,直接读取自然全部返回null。播客的跳转URL实际挂载在这个div嵌套的子级<a>标签上。你看到的3*3null矩阵是控制台对长度为9的数组的打印折叠效果,本质就是9个匹配到的div都读不到href值。
  • 语法缺失:你贴出的代码没有闭合getList函数的花括号,也没有添加getList()调用语句,本地运行时需要补全这部分代码才能正常执行。
修正方案

直接把选择器的匹配目标改成对应div内部的<a>标签即可,补全语法后的完整代码如下:

const puppeteer = require("puppeteer")

const getList = async () => {
  const browser = await puppeteer.launch({ headless: false, args: [ '--proxy-server=firewall.ina.fr:81' ] })
  const page = await browser.newPage()
  await page.goto("https://www.lesonunique.com/podcasts")
  await page.waitForSelector('div.block3-content.block3-content-modif')
  const urls = await page.evaluate(() => Array.from(
      // 匹配目标div下的跳转a标签
      document.querySelectorAll('div.block3-content.block3-content-modif a'),
      link => link.href
    ));
  console.log(urls);
  console.log(urls[1]);
  // 执行完成后关闭浏览器实例
  await browser.close()
}
// 调用函数启动爬取
getList()

如果运行后出现个别链接漏抓,优先检查卡片div内是否存在多个a标签,给a标签加上对应类名缩小选择范围即可,也可以先选中div再通过div.querySelector('a').href的方式取主链接,避免选中无关的a标签。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 15:00:44