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

如何通过Python API获取Mesa, AZ的Socrata全量数据集?

解决Socrata实例(Mesa, AZ)全量数据集获取问题

问题根源

你使用的/api/catalog/v1是Socrata Open Data Network的全局目录API,仅返回同步到全局网络的数据集(也就是你看到的41条),而非目标实例data.mesaaz.gov的本地全量数据集。

正确的本地数据集列表接口

每个Socrata实例都提供专属的本地元数据端点,用于获取该实例下的所有公开数据集:
https://data.mesaaz.gov/api/views/metadata/v1

这个端点支持分页参数(offset和limit),可以遍历获取全量数据集。

Python实现示例

方式1:直接使用requests库

import requests

base_url = "https://data.mesaaz.gov"
endpoint = f"{base_url}/api/views/metadata/v1"

offset = 0
limit = 100
all_datasets = []

while True:
    response = requests.get(endpoint, params={"offset": offset, "limit": limit})
    response.raise_for_status()
    batch = response.json()
    if not batch:
        break
    all_datasets.extend(batch)
    offset += limit

print(f"成功获取 {len(all_datasets)} 个数据集")

方式2:使用sodapy库(指定本地端点)

sodapy默认的datasets()方法调用的是全局catalog API,需手动指定本地元数据端点:

from sodapy import Socrata

client = Socrata("data.mesaaz.gov", None)  # 公开数据无需API密钥,传None即可

offset = 0
limit = 100
all_datasets = []

while True:
    batch = client.get("/api/views/metadata/v1", offset=offset, limit=limit)
    if not batch:
        break
    all_datasets.extend(batch)
    offset += limit

print(f"成功获取 {len(all_datasets)} 个数据集")

后续操作

获取到数据集元数据后,可通过每个数据集的id字段,调用https://data.mesaaz.gov/resource/{dataset_id}.json接口获取具体数据内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 23:22:10