如何通过CKAN API提取柏林犯罪数据?求API请求示例
调整CKAN API请求以提取柏林犯罪数据
核心问题修正
你当前代码使用的是CKAN演示环境的URL,无法获取柏林开放数据平台的内容。需要替换为柏林官方开放数据平台的CKAN API地址,并调整请求参数来定位犯罪相关数据集。
调整后的完整代码(搜索犯罪相关数据集)
import requests # 柏林开放数据平台的CKAN API搜索接口 ckan_url = "https://daten.berlin.de/api/action/package_search" # 用德语关键词"kriminalität"(对应"犯罪")搜索相关数据集,适配平台的德语命名规则 params = { "q": "kriminalität", "rows": 20 # 控制返回结果数量,可按需修改 } response = requests.get(ckan_url, params=params) if response.status_code == 200: result = response.json()["result"] print(f"共找到 {result['count']} 个相关数据集:") for dataset in result["results"]: print(f"- 数据集ID:{dataset['name']}") print(f" 标题:{dataset['title']}") print(f" 描述:{dataset['notes'][:100]}...") # 截取部分描述避免过长 print(" 可下载资源:") for idx, resource in enumerate(dataset['resources'][:3]): # 显示前3个资源 print(f" {idx+1}. {resource['name']}:{resource['url']}") print("---") else: print(f"请求失败:状态码 {response.status_code},响应内容:{response.text}")
关键调整说明
- 替换API URL:将演示环境地址改为柏林开放数据官方API的
package_search接口,这是CKAN标准的数据集搜索入口。 - 精准搜索参数:使用德语关键词
kriminalität,因为柏林开放数据平台的数据集多以德语命名,能更准确匹配到犯罪相关数据;若需英文关键词可尝试crime,但效果有限。 - 提取资源链接:每个数据集的
resources字段包含具体数据文件的下载链接(CSV、JSON等格式),可直接用于获取原始数据。
针对特定数据集的精准请求(可选)
如果通过搜索找到目标数据集的ID(比如某个区域年度犯罪统计的ID),可以直接用package_show接口获取该数据集的完整信息:
import requests ckan_url = "https://daten.berlin.de/api/action/package_show" # 替换为你找到的具体犯罪数据集ID params = {"id": "kriminalitaet-berlin-bezirke"} response = requests.get(ckan_url, params=params) if response.status_code == 200: dataset = response.json()["result"] print(f"数据集标题:{dataset['title']}") print(f"完整描述:{dataset['notes']}") print("所有资源链接:") for resource in dataset["resources"]: print(f"- {resource['name']}:{resource['url']}") else: print(f"请求失败:{response.status_code} {response.text}")
内容的提问来源于stack exchange,提问作者0004
相关产品推荐
相关产品推荐

