(爬)抓公開資訊的gzip檔並存成txt

 抓公開資訊的gzip檔並存成txt

練習用urllib來抓取公開資訊裡的gz壓縮檔
其中的新北市公車站位資訊,有兩種方式可供抓取,一種
是先將檔案下載下來解壓後讀取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而取是字串,所以用判斷式來改成中文字串

結果



留言

這個網誌中的熱門文章

(爬)泉洲便民資訊標題+生成云詞