iT邦幫忙

0

爬蟲問題 python

最近需要空氣品質的資料
所以找了
https://pm25.lass-net.org/#apis
裡面有提供一些API
只是他的API需要先解壓縮才能有json檔
但是我目前卡在無法讀取壓縮檔的資料

import urllib
import gzip
import json
url = 'https://pm25.lass-net.org/data/last-all-airbox.json.gz'
f = gzip.open('last-all-airbox.json.gz','r')
jdata = f.read()
f.close()
data = json.loads(jdata)
data

會出現 No such file or directory: 'last-all-airbox.json.gz' 錯誤

請問有哪邊有問題?
last-all-airbox.json.gz 是壓縮檔的名子

還是有其他方法是可以把api 的json是壓縮檔用python讀取?

2 個回答

0
浩瀚星空
iT邦超人 1 級 ‧ 2019-10-27 01:08:51

雖然我對 python 並不太了解。
但從程式碼來看,你根本就沒將其檔案下載回來。
那要怎麼去解壓縮它啊?

錯誤訊息不是也很明白的告訴你了,找不到目錄或是檔案了。
難不成,你以為 python 可以幫你去別人的地方解壓???

你因該要先做檔案下載的動作後才去處理解壓。

ccutmis iT邦高手 8 級 ‧ 2019-10-27 01:45:18 檢舉

星空大說的是正解~ 借貼參考範例碼:

import requests,gzip,json
gzfileUrl="https://pm25.lass-net.org/data/last-all-airbox.json.gz"
gzflieSaveName="last-all-airbox.json.gz"
r = requests.get(gzfileUrl)
open(gzflieSaveName, 'wb').write(r.content)

f = gzip.open(gzflieSaveName,'r')
jdata = f.read()
f.close()
data = json.loads(jdata)
print(data)
1
mackuo
iT邦新手 5 級 ‧ 2019-10-28 22:44:49

小弟初學,爬文後的解決方式:

import urllib
import gzip
import json
url = 'https://pm25.lass-net.org/data/last-all-airbox.json.gz'
file_name = url.split("/")[-1]
urllib.request.urlretrieve(url, file_name)

f = gzip.open(file_name,'r')
jdata = f.read()
f.close()
data = json.loads(jdata)
data

https://ithelp.ithome.com.tw/upload/images/20191028/20122335oRKBZYQDqe.png

我要發表回答

立即登入回答