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

网页爬取出现KeyError: 'children'错误求助

解决KeyError: 'children'爬取问题

你的代码报错是因为部分数据条目不存在'children'键,直接通过d["children"]访问不存在的键会触发KeyError。

修复方案

使用字典的get()方法替代直接键访问,该方法允许你指定一个默认值(这里设为空列表[]),当键不存在时自动返回默认值,避免报错:

import re
import json
import requests
import pandas as pd
import os

r = requests.get('https://openbilanci.it/armonizzati/bilanci/grotte-comune-ag/spese/dettaglio?year=2021&type=preventivo')
p = re.compile("var bilancio_tree = (.*?);")
data = p.search(r.text).group(1)

data = json.loads(data)

all_data = []
        
for d in data:
    for v in d["values"]:
        for kk, vv in v.items():
            all_data.append([d["label"], "-", kk, vv.get("abs"), vv.get("pc")])
            
    # 使用get()方法获取children,默认返回空列表
    for c in d.get("children", []):
        for v in c["values"]:
            for kk, vv in v.items():
                all_data.append(
                    [d["label"], c["label"], kk, vv.get("abs"), vv.get("pc")]
                    )
                        
df = pd.DataFrame(all_data, columns=["label 1", "label 2", "year", "abs", "PC"])

说明

d.get("children", [])的作用是:

  • 如果当前条目存在'children'键,返回对应的子列表
  • 如果不存在,返回空列表[],此时循环不会执行任何操作,完美跳过无children的条目

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 06:57:11