(爬)抓公開資訊的gzip檔並存成txt
抓公開資訊的gzip檔並存成txt
其中的新北市公車站位資訊,有兩種方式可供抓取,一種
是先將檔案下載下來解壓後讀取json檔,另一種是現在我
正要練習的直接讀取gz檔裡的json。
首先導入的庫
import urllib, gzip
import json
import urllib.request
將此網址複製起來
讀取網址內的gzip檔
with urllib.request.urlopen(url) as r:
with gzip.GzipFile(fileobj=r) as f:
jdata=f.read()
f.close()
data=json.loads(jdata)
上面第一行是使用urllib裡的庫解析網址和請求
第二行是用gzip裡的庫解壓並讀取json檔
將須要的資訊提出來並存成txt
with open('buspoint.txt', 'w', encoding='utf-8') as t:
for v in data['BusInfo']:
id=v['Id']
name=v['nameZh']
add=v['address']#pgp 上下車站別 (-1:可下車、0:可上下車、1:可上車)
#goBack 去返程 (0:去程 / 1:返程 / 2:未知)
goback=v['goBack']
pgp=v['pgp']
if pgp=='-1':
g=("可下車")
elif pgp=='0':
g="可上下車"
else:
g="可上車"
if goback=='0':
a='去程'
elif goback=='1':
a='返程'
else:
a='未知'
print("ID: "+str(id),name,add,a,g)
d="ID: ",id,name,add,a,g
t.write(str(d)+'\n')
t.close()
因為pgp和goback印出來是0,1,2,-1而取是字串,所以用判斷式來改成中文字串
留言
張貼留言