网页爬取出现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
相关产品推荐
相关产品推荐

