来自Python的post请求中的JSON查询并将结果保存为csv-fi

2024-09-23 00:20:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试编写一个将连接到指定url的程序:

http://api.scb.se/OV0104/v1/doris/sv/ssd/START/BO/BO0104/BostadsbestandK

并使用以下查询:

^{pr2}$

然后我想将结果存储到一个csv文件中。在

这是我目前掌握的代码:

import urllib.request
import json

url = 'http://api.scb.se/OV0104/v1/doris/sv/ssd/START/BO/BO0104/BostadsbestandK'

data = '{ "query": [ { "code": "Region", "selection": { "filter": "vs:RegionRiket99", "values": [ "00" ] } }, { "code": "Hustyp", "selection": { "filter": "item", "values": [ "FLERBO", "SMÅHUS" ] } }, { "code": "Tid", "selection": { "filter": "item", "values": [ "2012" ] } } ], "response": { "format": "csv" } }'
data = json.dumps(data)

Tags: apihttpurldatacodefilterv1values
1条回答
网友
1楼 · 发布于 2024-09-23 00:20:47

您应该而不是将查询定义为字符串;将其保留为Python对象:

data = { "query": [ { "code": "Region", "selection": { "filter": "vs:RegionRiket99", "values": [ "00" ] } }, { "code": "Hustyp", "selection": { "filter": "item", "values": [ "FLERBO", "SMÅHUS" ] } }, { "code": "Tid", "selection": { "filter": "item", "values": [ "2012" ] } } ], "response": { "format": "csv" } }
data = json.dumps(data)

您需要设置一个application/json请求头来指示内容。您可以使用urllib.request.Request()对象执行此操作;请先将JSON数据编码为UTF-8:

^{pr2}$

现在,您可以将CSV保存到一个文件中;使用^{}可以使这一功能更有效,即使对于大型响应:

import shutil

with open(csvfilename, 'wb') as outf:
    shutil.copyfileobj(response, outf)

相关问题 更多 >