[英]Haw to save the new result which are extracting from csv file in python?
[英]JSON query in a post request from Python and save result as csv file
我正在嘗試編寫一個將連接到指定網址的程序:
http://api.scb.se/OV0104/v1/doris/sv/ssd/START/BO/BO0104/BostadsbestandK
並使用以下查詢:
{ "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" } }
然后,我想將結果存儲到一個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)
你不應該定義查詢為字符串; 留下一個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:
request = urllib.request.Request(url, data.encode('utf8'))
request.add_header('content-type', 'application/json')
response = urllib.request.urlopen(request)
現在您可以將CSV保存到文件; 使用shutil.copyfileobj()
即使對於較大的響應也可以使此效率高:
import shutil
with open(csvfilename, 'wb') as outf:
shutil.copyfileobj(response, outf)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.