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

使用Puppeteer爬取页面时出现TypeError: Cannot read properties of null错误

问题分析与解决

问题原因

报错TypeError: Cannot read properties of null (reading 'textContent')的核心原因是:你用的ul li选择器范围太宽,匹配到了页面里不包含.desc a元素的li节点。当代码尝试对这些节点读取textContent时,因为querySelector('.desc a')返回了null,自然没法获取属性,直接抛出错误。

页面里大概率存在其他无关的ul li(比如导航栏、页脚的列表),这些li的结构和目标简历列表完全不同,根本没有.desc a这个子元素。

解决方案

方案1:用更精准的目标选择器

直接用你提到的.content .template_ul_li选择器,它只会匹配简历列表区域的li节点,不会选中无关元素:

const selector = '.content .template_ul_li';

方案2:遍历前先做存在性判断

如果一定要用ul li,可以在遍历的时候先检查.desc a是否存在,有内容才提取,没有就跳过:

const articles = await page.$$eval(selector, nodes => {
    return nodes.map(node => {            
        const titleEl = node.querySelector('.desc a');
        // 先判断元素是否存在
        if (!titleEl) {
            return null; // 也可以返回{ title: '无有效标题' }
        }
        let title = titleEl.textContent.trim();
        title = title.replace(/[\n\r]+|[\s]{2,}/g, ", ");
        return {
            title,
        }
    }).filter(item => item !== null); // 过滤掉无效的项
});

额外优化:强化等待逻辑

你已经用了waitForSelector,可以改成等待目标标题元素加载完成,确保内容完全渲染:

// 等待具体的标题元素出现,而不是只等li
await page.waitForSelector('.content .template_ul_li .desc a');

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 05:10:16