2016年3月15日 星期二

Python 抓取YouBike資料

也是爬蟲的一種

  • youbike data link)。來自台北市政府的說明「為提供更優質之資料服務,YouBike臺北市公共自行車即時資訊介接網址自10月16日起改為http://data.taipei/youbike 檔案格式為經gz壓縮之json檔,請下載後解壓縮使用(部分瀏覽器如Chrome下載後會自動解壓縮,請留意!)
  • 規格調整如右連結http://goo.gl/pmcIo3 此外,「最後更新時間」欄位之內容為詮釋資料更新時間,非資料檔案更新時間,實際資料檔案更新時間為「每1分鐘」,可參考檔案內容之「mday」欄位。」
  • 標準獲取youbike資料的流程
    1. 用urllib獲取該資料檔,並命名為data.gz
    2. 用gzip將該資料的壓縮檔打開並讀取內容
    3. 讀取的內容為一json檔案,用json.loads()將其轉換為list+dictionary的格式。
    4. 最後一一存取其內容


1,2,3:一開始 import 必要的東西   (url,json格式,gzip解壓~)
4,5然後到youbike網站抓取資料
然後將所拿到的資料存成data.gz
6,7讀檔 並使用json格式

1
2
3
4
5
6
7
import urllib
import json
import gzip
url = 'http://data.taipei/youbike'
url = urllib.urlretrieve(url, "data.gz")
jdata = gzip.open('data.gz', 'r').read()
data = json.loads(jdata)

初步就完成拉~
接下來就要分析抓取的資料了~
個人小小讚嘆一下json格式與python 的list,dict的契合度....發現實在太棒了!

Python List,Dictionary Reference:
http://www.pythonlearn.com/html-270/book009.html
http://www.pythonlearn.com/html-270/book010.html

首先先來看看data吧

print data

接下來應該會有一大筆資料以dict的方式包裝起來
觀看後發現key只有兩個(也可以使用 keys() 函式
而retVal是主要資料儲存key
接下來使用for 迴圈來抓每站的資料

for site in data["retVal"]:

此舉抓到的"site" 為字典檔的開頭key
另外對照http://goo.gl/pmcIo3參數定義來抓取資料

EX:

print data['retVal'][site]['sna']

sna代表站名
就可以抓到每個youbike站的站名~
慢慢修正print 便可以看自己想看的東西摟

以下範例:

1
2
3
4
5
6
7
8
9
import urllib
import json
import gzip
url = 'http://data.taipei/youbike'
url = urllib.urlretrieve(url, "data.gz")
jdata = gzip.open('data.gz', 'r').read()
data = json.loads(jdata)
for site in data["retVal"]:
    print data["retVal"][site]["sna"],",總停車格:",data["retVal"][site]["tot"],",可借數量:",data["retVal"][site]["sbi"]," 可停數量:",data["retVal"][site]["bemp"]


結果:

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
捷運芝山站(2號出口) ,總停車格: 64 ,可借數量: 40  可停數量: 22
捷運石牌站(2號出口) ,總停車格: 54 ,可借數量: 27  可停數量: 25
國立臺北護理健康大學 ,總停車格: 30 ,可借數量: 18  可停數量: 12
國防大學 ,總停車格: 46 ,可借數量: 11  可停數量: 35
南港世貿公園 ,總停車格: 26 ,可借數量: 13  可停數量: 13
臺灣師範大學(圖書館) ,總停車格: 34 ,可借數量: 10  可停數量: 23
羅斯福新生南路口 ,總停車格: 88 ,可借數量: 18  可停數量: 68
蘭興公園 ,總停車格: 40 ,可借數量: 23  可停數量: 17
捷運行天宮站(3號出口) ,總停車格: 30 ,可借數量: 18  可停數量: 12
捷運行天宮站(1號出口) ,總停車格: 32 ,可借數量: 21  可停數量: 11
捷運東門站(4號出口) ,總停車格: 46 ,可借數量: 23  可停數量: 22
臺大資訊大樓 ,總停車格: 72 ,可借數量: 38  可停數量: 34
辛亥新生路口 ,總停車格: 30 ,可借數量: 16  可停數量: 14
基隆長興路口 ,總停車格: 74 ,可借數量: 23  可停數量: 50
中崙高中 ,總停車格: 46 ,可借數量: 22  可停數量: 24
捷運六張犁站 ,總停車格: 30 ,可借數量: 20  可停數量: 10
敦化基隆路口 ,總停車格: 30 ,可借數量: 13  可停數量: 16
羅斯福寧波東街口 ,總停車格: 26 ,可借數量: 17  可停數量: 9
洲子二號公園 ,總停車格: 34 ,可借數量: 11  可停數量: 23
東湖國中 ,總停車格: 40 ,可借數量: 27  可停數量: 13
中山天母路口 ,總停車格: 44 ,可借數量: 27  可停數量: 17
文山行政中心 ,總停車格: 36 ,可借數量: 11  可停數量: 24
捷運大橋頭站(2號出口) ,總停車格: 46 ,可借數量: 25  可停數量: 21
捷運動物園站(2號出口) ,總停車格: 72 ,可借數量: 45  可停數量: 26
捷運木柵站 ,總停車格: 52 ,可借數量: 35  可停數量: 17
樹德公園 ,總停車格: 40 ,可借數量: 27  可停數量: 13
國立政治大學 ,總停車格: 70 ,可借數量: 29  可停數量: 41
士林運動中心 ,總停車格: 32 ,可借數量: 12  可停數量: 20
捷運士林站(2號出口) ,總停車格: 46 ,可借數量: 17  可停數量: 28
北投運動中心 ,總停車格: 62 ,可借數量: 32  可停數量: 29
捷運明德站 ,總停車格: 68 ,可借數量: 52  可停數量: 16
內政部營建署 ,總停車格: 40 ,可借數量: 18  可停數量: 22
南港車站 ,總停車格: 38 ,可借數量: 24  可停數量: 14
龍門廣場 ,總停車格: 52 ,可借數量: 27  可停數量: 25
華西公園 ,總停車格: 30 ,可借數量: 13  可停數量: 17
振華公園 ,總停車格: 36 ,可借數量: 14  可停數量: 22
天母運動公園 ,總停車格: 44 ,可借數量: 25  可停數量: 19
捷運港墘站(2號出口) ,總停車格: 50 ,可借數量: 24  可停數量: 26
龍江南京路口 ,總停車格: 66 ,可借數量: 35  可停數量: 31
捷運龍山寺站(1號出口) ,總停車格: 46 ,可借數量: 22  可停數量: 24
玉成公園 ,總停車格: 34 ,可借數量: 21  可停數量: 13
中研公園 ,總停車格: 30 ,可借數量: 16  可停數量: 14
捷運後山埤站(1號出口) ,總停車格: 38 ,可借數量: 23  可停數量: 14
凌雲市場 ,總停車格: 36 ,可借數量: 23  可停數量: 11
捷運南港軟體園區站(2號出口) ,總停車格: 36 ,可借數量: 25  可停數量: 11
捷運公館站(2號出口) ,總停車格: 30 ,可借數量: 12  可停數量: 15
南港國小 ,總停車格: 44 ,可借數量: 16  可停數量: 27
捷運忠孝新生站(3號出口) ,總停車格: 40 ,可借數量: 17  可停數量: 23
市民東興路口 ,總停車格: 30 ,可借數量: 12  可停數量: 18
考試院 ,總停車格: 34 ,可借數量: 22  可停數量: 12
捷運新北投站 ,總停車格: 48 ,可借數量: 29  可停數量: 17
仁愛逸仙路口 ,總停車格: 38 ,可借數量: 14  可停數量: 23
林森公園 ,總停車格: 32 ,可借數量: 10  可停數量: 20
捷運善導寺站(1號出口) ,總停車格: 48 ,可借數量: 22  可停數量: 25
福林公園 ,總停車格: 44 ,可借數量: 18  可停數量: 26
捷運北投站 ,總停車格: 58 ,可借數量: 15  可停數量: 41
蘭雅公園 ,總停車格: 30 ,可借數量: 7  可停數量: 23
臺北轉運站 ,總停車格: 68 ,可借數量: 32  可停數量: 34
八德市場 ,總停車格: 26 ,可借數量: 3  可停數量: 23
建國長春路口 ,總停車格: 30 ,可借數量: 15  可停數量: 15
建國農安街口 ,總停車格: 44 ,可借數量: 21  可停數量: 23
民權運動公園 ,總停車格: 52 ,可借數量: 33  可停數量: 19
新生和平路口 ,總停車格: 46 ,可借數量: 13  可停數量: 33
仁愛林森路口 ,總停車格: 42 ,可借數量: 14  可停數量: 28
臺北田徑場 ,總停車格: 46 ,可借數量: 26  可停數量: 20
臺北市立圖書館(總館) ,總停車格: 30 ,可借數量: 16  可停數量: 11
捷運東湖站 ,總停車格: 48 ,可借數量: 31  可停數量: 16
市民太原路口 ,總停車格: 34 ,可借數量: 14  可停數量: 19
福安國中 ,總停車格: 30 ,可借數量: 10  可停數量: 19
臺北市立大學(天母校區) ,總停車格: 42 ,可借數量: 20  可停數量: 22
木柵光輝路口 ,總停車格: 28 ,可借數量: 17  可停數量: 11
古亭國中 ,總停車格: 40 ,可借數量: 18  可停數量: 22
捷運西湖站(1號出口) ,總停車格: 36 ,可借數量: 18  可停數量: 16
撫順公園 ,總停車格: 30 ,可借數量: 7  可停數量: 18
捷運復興崗站 ,總停車格: 42 ,可借數量: 25  可停數量: 16
清江國小 ,總停車格: 40 ,可借數量: 19  可停數量: 21
林安泰古厝 ,總停車格: 36 ,可借數量: 23  可停數量: 13
臺北孔廟 ,總停車格: 32 ,可借數量: 1  可停數量: 29
峨嵋停車場 ,總停車格: 42 ,可借數量: 16  可停數量: 25
台北花木批發市場 ,總停車格: 38 ,可借數量: 31  可停數量: 7
捷運小南門站(1號出口) ,總停車格: 54 ,可借數量: 30  可停數量: 24
西園艋舺路口 ,總停車格: 44 ,可借數量: 27  可停數量: 17
華山文創園區 ,總停車格: 50 ,可借數量: 11  可停數量: 39
金山市民路口 ,總停車格: 40 ,可借數量: 19  可停數量: 21
萬大興寧街口 ,總停車格: 52 ,可借數量: 25  可停數量: 27
臺北市客家文化主題公園 ,總停車格: 32 ,可借數量: 16  可停數量: 16
捷運劍南路站(2號出口) ,總停車格: 56 ,可借數量: 25  可停數量: 30
向陽南港路口 ,總停車格: 32 ,可借數量: 11  可停數量: 21
麗山高中 ,總停車格: 40 ,可借數量: 15  可停數量: 23
文山第二行政中心 ,總停車格: 38 ,可借數量: 25  可停數量: 13
捷運南京復興站(5號出口) ,總停車格: 52 ,可借數量: 19  可停數量: 30
星雲金湖街口 ,總停車格: 40 ,可借數量: 18  可停數量: 22
樂群二敬業四路口 ,總停車格: 60 ,可借數量: 39  可停數量: 21
蘭雅國小 ,總停車格: 30 ,可借數量: 17  可停數量: 13
北安大直街口 ,總停車格: 50 ,可借數量: 27  可停數量: 23
捷運北門站(3號出口) ,總停車格: 62 ,可借數量: 31  可停數量: 31
基河一期國宅 ,總停車格: 54 ,可借數量: 37  可停數量: 15
臺北花市 ,總停車格: 40 ,可借數量: 23  可停數量: 16
培英公園 ,總停車格: 50 ,可借數量: 26  可停數量: 24
捷運葫洲站(1號出口) ,總停車格: 44 ,可借數量: 26  可停數量: 18
舊莊區民活動中心 ,總停車格: 36 ,可借數量: 22  可停數量: 13
捷運大直站(3號出口) ,總停車格: 52 ,可借數量: 37  可停數量: 14
捷運大湖公園站(2號出口) ,總停車格: 58 ,可借數量: 23  可停數量: 32
新湖國小 ,總停車格: 24 ,可借數量: 12  可停數量: 12
東陽公園 ,總停車格: 44 ,可借數量: 21  可停數量: 23
市民林森路口 ,總停車格: 50 ,可借數量: 30  可停數量: 19
信義杭州路口(中華電信總公司) ,總停車格: 50 ,可借數量: 28  可停數量: 22
延平國宅 ,總停車格: 32 ,可借數量: 21  可停數量: 11
南港公園 ,總停車格: 52 ,可借數量: 28  可停數量: 24
新東公園 ,總停車格: 50 ,可借數量: 35  可停數量: 15
文山運動中心 ,總停車格: 38 ,可借數量: 18  可停數量: 19
捷運南京三民站(1號出口) ,總停車格: 24 ,可借數量: 11  可停數量: 12
捷運松江南京站(7號出口) ,總停車格: 56 ,可借數量: 29  可停數量: 26
捷運小巨蛋站(5號出口) ,總停車格: 52 ,可借數量: 38  可停數量: 13
文湖國小 ,總停車格: 44 ,可借數量: 22  可停數量: 21
興安華城 ,總停車格: 98 ,可借數量: 71  可停數量: 27
葫蘆國小 ,總停車格: 40 ,可借數量: 24  可停數量: 16
捷運忠孝復興站(2號出口) ,總停車格: 54 ,可借數量: 28  可停數量: 26
瑠公公園 ,總停車格: 30 ,可借數量: 14  可停數量: 15
劍潭社區 ,總停車格: 42 ,可借數量: 21  可停數量: 20
仁愛延吉街口 ,總停車格: 34 ,可借數量: 20  可停數量: 13
臺北市立大學 ,總停車格: 82 ,可借數量: 57  可停數量: 23
建國和平路口 ,總停車格: 52 ,可借數量: 22  可停數量: 28
福華商場 ,總停車格: 40 ,可借數量: 17  可停數量: 21
圓環站 ,總停車格: 38 ,可借數量: 25  可停數量: 11
捷運古亭站(2號出口) ,總停車格: 50 ,可借數量: 21  可停數量: 28
金瑞公園(金龍路) ,總停車格: 38 ,可借數量: 18  可停數量: 20
社子國小 ,總停車格: 60 ,可借數量: 44  可停數量: 15
師範大學公館校區 ,總停車格: 42 ,可借數量: 25  可停數量: 14
捷運臺大醫院(4號出口) ,總停車格: 48 ,可借數量: 28  可停數量: 19
國家圖書館 ,總停車格: 50 ,可借數量: 16  可停數量: 33
青年公園3號出口 ,總停車格: 38 ,可借數量: 24  可停數量: 13
南昌公園 ,總停車格: 34 ,可借數量: 18  可停數量: 14
仁愛醫院 ,總停車格: 36 ,可借數量: 11  可停數量: 25
中山行政中心 ,總停車格: 30 ,可借數量: 15  可停數量: 15
台灣科技大學 ,總停車格: 46 ,可借數量: 8  可停數量: 37
大業大同街口 ,總停車格: 36 ,可借數量: 17  可停數量: 19
國興青年路口 ,總停車格: 36 ,可借數量: 25  可停數量: 11
興豐公園 ,總停車格: 34 ,可借數量: 24  可停數量: 10
市民廣場 ,總停車格: 60 ,可借數量: 37  可停數量: 23
興雅國中 ,總停車格: 60 ,可借數量: 39  可停數量: 21
世貿二館 ,總停車格: 80 ,可借數量: 27  可停數量: 47
信義廣場(台北101) ,總停車格: 80 ,可借數量: 55  可停數量: 25
捷運市政府站(3號出口) ,總停車格: 180 ,可借數量: 141  可停數量: 39
捷運國父紀念館站(2號出口) ,總停車格: 48 ,可借數量: 26  可停數量: 20
台北市政府 ,總停車格: 40 ,可借數量: 8  可停數量: 31
捷運麟光站2號出口 ,總停車格: 72 ,可借數量: 41  可停數量: 30
捷運中山國小站(4號出口) ,總停車格: 70 ,可借數量: 32  可停數量: 38
大豐公園 ,總停車格: 56 ,可借數量: 34  可停數量: 22
捷運中山站(4號出口) ,總停車格: 30 ,可借數量: 9  可停數量: 21
世貿三館 ,總停車格: 60 ,可借數量: 19  可停數量: 41
松德站 ,總停車格: 40 ,可借數量: 20  可停數量: 20
捷運唭哩岸站(2號出口) ,總停車格: 62 ,可借數量: 44  可停數量: 18
捷運奇岩站 ,總停車格: 56 ,可借數量: 34  可停數量: 20
泰和公園 ,總停車格: 40 ,可借數量: 22  可停數量: 18
捷運信義安和站 ,總停車格: 30 ,可借數量: 14  可停數量: 16
捷運台北101/世貿站 ,總停車格: 52 ,可借數量: 17  可停數量: 34
酒泉延平路口 ,總停車格: 32 ,可借數量: 19  可停數量: 13
新生長安路口 ,總停車格: 42 ,可借數量: 33  可停數量: 9
基隆光復路口 ,總停車格: 30 ,可借數量: 11  可停數量: 18
信義連雲街口 ,總停車格: 40 ,可借數量: 28  可停數量: 11
民生活動中心 ,總停車格: 32 ,可借數量: 12  可停數量: 19
新生長春路口 ,總停車格: 36 ,可借數量: 27  可停數量: 9
捷運民權西路站(3號出口) ,總停車格: 50 ,可借數量: 25  可停數量: 24
捷運圓山站(2號出口) ,總停車格: 52 ,可借數量: 27  可停數量: 25
民生光復路口 ,總停車格: 34 ,可借數量: 18  可停數量: 16
松山家商 ,總停車格: 48 ,可借數量: 36  可停數量: 12
饒河夜市 ,總停車格: 60 ,可借數量: 37  可停數量: 23
榮星花園 ,總停車格: 32 ,可借數量: 18  可停數量: 14
福德公園 ,總停車格: 66 ,可借數量: 35  可停數量: 29
臺北醫學大學 ,總停車格: 34 ,可借數量: 17  可停數量: 17
三張犁 ,總停車格: 66 ,可借數量: 22  可停數量: 44
台北市災害應變中心 ,總停車格: 54 ,可借數量: 39  可停數量: 15
植物園 ,總停車格: 44 ,可借數量: 23  可停數量: 20
中強公園 ,總停車格: 30 ,可借數量: 15  可停數量: 15
社教館 ,總停車格: 38 ,可借數量: 19  可停數量: 18
河堤國小 ,總停車格: 44 ,可借數量: 22  可停數量: 22
松德公園 ,總停車格: 38 ,可借數量: 20  可停數量: 18
捷運象山站 ,總停車格: 58 ,可借數量: 39  可停數量: 19
和平重慶路口 ,總停車格: 44 ,可借數量: 27  可停數量: 17
復華花園新城 ,總停車格: 38 ,可借數量: 24  可停數量: 14
信義敦化路口 ,總停車格: 46 ,可借數量: 26  可停數量: 20
民權復興路口 ,總停車格: 46 ,可借數量: 21  可停數量: 22
捷運大安站 ,總停車格: 58 ,可借數量: 34  可停數量: 23
華江高中 ,總停車格: 44 ,可借數量: 33  可停數量: 9
捷運台電大樓站(2號出口) ,總停車格: 40 ,可借數量: 9  可停數量: 30
捷運西門站(3號出口) ,總停車格: 60 ,可借數量: 30  可停數量: 30
捷運大安森林公園站 ,總停車格: 74 ,可借數量: 39  可停數量: 15
松山車站 ,總停車格: 44 ,可借數量: 22  可停數量: 22
東新國小 ,總停車格: 32 ,可借數量: 24  可停數量: 7
捷運科技大樓站 ,總停車格: 70 ,可借數量: 30  可停數量: 36
民生敦化路口 ,總停車格: 66 ,可借數量: 33  可停數量: 33
捷運昆陽站(1號出口) ,總停車格: 42 ,可借數量: 16  可停數量: 26
捷運南港展覽館站(5號出口) ,總停車格: 50 ,可借數量: 23  可停數量: 27
信義建國路口 ,總停車格: 46 ,可借數量: 29  可停數量: 16
永吉松信路口 ,總停車格: 30 ,可借數量: 19  可停數量: 11
大稻埕公園 ,總停車格: 38 ,可借數量: 17  可停數量: 20
臺北市立天文館 ,總停車格: 50 ,可借數量: 33  可停數量: 15
五常公園 ,總停車格: 36 ,可借數量: 18  可停數量: 14
金山愛國路口 ,總停車格: 54 ,可借數量: 35  可停數量: 18
臥龍樂業街口 ,總停車格: 40 ,可借數量: 29  可停數量: 10
捷運永春站(2號出口) ,總停車格: 30 ,可借數量: 12  可停數量: 18
臺北市立景美女中 ,總停車格: 34 ,可借數量: 15  可停數量: 19
大理高中 ,總停車格: 38 ,可借數量: 18  可停數量: 17
捷運文德站(2號出口) ,總停車格: 50 ,可借數量: 34  可停數量: 16
松山高中 ,總停車格: 42 ,可借數量: 10  可停數量: 24
成功國宅 ,總停車格: 36 ,可借數量: 24  可停數量: 12
南京建國路口 ,總停車格: 58 ,可借數量: 34  可停數量: 24
永樂市場 ,總停車格: 30 ,可借數量: 6  可停數量: 23
東湖國小 ,總停車格: 38 ,可借數量: 10  可停數量: 27
麗山國小 ,總停車格: 42 ,可借數量: 25  可停數量: 14
中正基河路口 ,總停車格: 38 ,可借數量: 18  可停數量: 20
瑞光港墘路口 ,總停車格: 30 ,可借數量: 13  可停數量: 17
百齡國小 ,總停車格: 40 ,可借數量: 24  可停數量: 16
蔣渭水紀念公園 ,總停車格: 40 ,可借數量: 15  可停數量: 25
捷運雙連站(2號出口) ,總停車格: 42 ,可借數量: 27  可停數量: 15
羅斯福景隆街口 ,總停車格: 48 ,可借數量: 0  可停數量: 0
捷運劍潭站(2號出口) ,總停車格: 52 ,可借數量: 35  可停數量: 17
三民公園 ,總停車格: 30 ,可借數量: 13  可停數量: 15
東園國小 ,總停車格: 32 ,可借數量: 13  可停數量: 19
捷運景美站 ,總停車格: 52 ,可借數量: 0  可停數量: 0
吳興公車總站 ,總停車格: 56 ,可借數量: 39  可停數量: 16
開封西寧路口 ,總停車格: 42 ,可借數量: 15  可停數量: 27
市立美術館 ,總停車格: 36 ,可借數量: 24  可停數量: 10
老松國小 ,總停車格: 44 ,可借數量: 17  可停數量: 27







沒有留言:

張貼留言