解析新冠暴露站点API返回JSON,无法提取Site_streetaddress字段
新冠疫情暴露站点地址提取实现
你可以直接在现有代码基础上新增列表推导逻辑提取目标字段,完整可运行代码如下:
import urllib.request import json url = 'https://discover.data.vic.gov.au/api/3/action/datastore_search?resource_id=afb52611-6061-4a2b-9110-74c920bede77&limit=5' response = urllib.request.urlopen(url).read() jsonResponse = json.loads(response.decode('utf-8')) # 提取所有站点街道地址 address_list = [record['Site_streetaddress'].strip() for record in jsonResponse['result']['records']] # 输出验证结果 print(address_list)
逻辑说明
- 接口返回的JSON结构中,所有站点明细数据都存储在根节点下的
result对象的records数组内 - 遍历
records数组的每一条站点对象,直接取Site_streetaddress字段即可,strip()方法用于清理部分地址末尾多余的空白字符、制表符
容错优化
如果存在部分异常数据缺失目标字段的场景,可以换成更稳妥的写法避免报错:
address_list = [record.get('Site_streetaddress', '').strip() for record in jsonResponse['result']['records']]
运行输出示例
['Corner Victoria Cross Parade & Kelliher Avenue', '50 Kangan Drive', 'Corner Bacchua Marsh & Purnell Road', '135 Separation Street', '83C Purnell Road']
如果需要拉取全部533条站点数据,只需将URL参数中的limit=5修改为limit=533即可。
内容的提问来源于stack exchange,提问作者Alp
相关产品推荐
相关产品推荐

