iT邦幫忙

0

如何將 YOUBIKE 使用資訊匯入 MYSQL

我網路搜尋 youbike 匯入 MYSQL 但找不到相關資料 , 以下是我要匯入的網址

https://tcgbusfs.blob.core.windows.net/blobyoubike/YouBikeTP.json
apple3960 iT邦新手 5 級 ‧ 2019-08-17 22:27:03 檢舉
你可以參考一下以下文章,
用python寫的,
JSON轉CSV的文章,
https://blog.csdn.net/qq_23926575/article/details/72788485
kevin543 iT邦新手 5 級 ‧ 2019-08-17 22:35:18 檢舉
你是說改寫以下程式嗎 ? 你可以到下面回復嗎 ? 這裡要貼圖片程式碼都不行

mport csv
import json
import sys
import codecs

def trans(path):
jsonData = codecs.open(path+'.json', 'r', 'utf-8')
# csvfile = open(path+'.csv', 'w') # 此处这样写会导致写出来的文件会有空行
# csvfile = open(path+'.csv', 'wb') # python2下
csvfile = open(path+'.csv', 'w', newline='') # python3下
writer = csv.writer(csvfile, delimiter='\t', quoting=csv.QUOTE_ALL)
flag = True
for line in jsonData:
dic = json.loads(line[0:-1])
if flag:
# 获取属性列表
keys = list(dic.keys())
print (keys)
writer.writerow(keys) # 将属性列表写入csv中
flag = False
# 读取json数据的每一行,将values数据一次一行的写入csv中
writer.writerow(list(dic.values()))
jsonData.close()
csvfile.close()

if __name__ == '__main__':
path=str(sys.argv[1]) # 获取path参数
print (path)
trans(path)
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
1
小魚
iT邦大師 1 級 ‧ 2019-08-17 21:40:31

我不知道你要做什麼...
YOUBIKE跟匯入MySql應該是兩件事,
你應該先抓到資料,
然後再想辦法匯入資料庫.
不過看起來你連程式語言都還沒決定,
總是要選一種後端語言來寫吧...
PHP、.Net、Java、Python ... ...

kevin543 iT邦新手 5 級 ‧ 2019-08-17 22:05:46 檢舉

我是要學習做一些資料分析 , 所以要匯入 youbike
後端我是要用 python , 我是不是要搞清楚以下各欄位
然侯在 excel 存成 csv 檔 , 在匯入 mysql
https://ithelp.ithome.com.tw/upload/images/20190817/20119742pKmQqQNqoa.png

小魚 iT邦大師 1 級 ‧ 2019-08-17 23:22:39 檢舉

不需要經過Excel,
(當然你要練習也是可以)
直接就寫進資料庫了.

小魚 iT邦大師 1 級 ‧ 2019-08-18 08:24:23 檢舉

現在大部分的問題Google就可以解決了,
稍微列一下你會需要學習的.
1.Python透過網址抓資料
2.解析Json字串
3.將資料整理成我們要的格式
4.將資料寫進MySql資料庫
當然前提是你的MySql已經安裝好而且設定好環境了.
(至少透過資料庫連線軟體可以正常連線)

2
dragonH
iT邦超人 5 級 ‧ 2019-08-17 22:12:11

你貼的這個

基本上俗稱廣義的 api

要達到你的目的

首先你要透過任意後端語言發 get request 到這 api

取得資料後再寫到 mysql

給個最基本的範例

import requests

data = requests.get('https://tcgbusfs.blob.core.windows.net/blobyoubike/YouBikeTP.json')
print(data.text)

這樣就能在 python 取得這些資料

整理、寫入 mysql

就留給你自己做了


關鍵字

python read json

python insert mysql

看更多先前的回應...收起先前的回應...
kevin543 iT邦新手 5 級 ‧ 2019-08-17 22:30:15 檢舉

謝謝 ! 聽不太懂 ,我現在補習才在學 , python for 與 while 迴圈 , 因為一個月後我們小組要交專題報告 , 我們的專題就是 youbike 使用分析 , 現在我們要先匯入 mysql , 請問你說的是網路爬蟲嗎 ?

dragonH iT邦超人 5 級 ‧ 2019-08-17 22:57:28 檢舉

廣義的爬蟲

其實就是把 html 抓回來分析輸出結果罷了

的確跟你這個類似

不過你這個不用分析

人家已經幫你把資料格式整理好了

簡單來說

你首先要到那個網址取得資料

取完資料後

整理成你想寫入 mysql 的格式

最後在寫入 mysql

kevin543 iT邦新手 5 級 ‧ 2019-08-17 23:04:17 檢舉

謝謝答覆 , 怎麼有錯誤訊息

https://ithelp.ithome.com.tw/upload/images/20190817/20119742hRNYXpZ05S.png

dragonH iT邦超人 5 級 ‧ 2019-08-17 23:06:27 檢舉

先猜你沒有 install requests

參考

小魚 iT邦大師 1 級 ‧ 2019-08-17 23:21:57 檢舉

這應該不算爬蟲,
比較接近API.

RenZhou iT邦新手 4 級 ‧ 2019-08-18 12:59:54 檢舉

爬API回來 廣義的話應該也算 XD
只是省去自己爬回來整理的時間

dragonH iT邦超人 5 級 ‧ 2019-08-18 13:03:42 檢舉

我的理解也是這樣/images/emoticon/emoticon07.gif

基本上就只差在 content-type

跟取回來的資料需不需要分析整理

而已

小魚 iT邦大師 1 級 ‧ 2019-08-18 17:48:51 檢舉

其實也不大需要在名詞上糾結,
重點是能夠寫出來的就是好貓(程序貓).
雖然有時候也會變成好魚.

0
I code so I am
iT邦高手 1 級 ‧ 2019-08-18 20:14:01

簡單的作法如下:

import pandas as pd
df=pd.read_json (r'https://tcgbusfs.blob.core.windows.net/blobyoubike/YouBikeTP.json')
for i, row in df.iterrows():
    if i == 0:
        df2 = pd.DataFrame([df.iloc[0,1]])
    else:
        df2 = pd.concat([df2, pd.DataFrame([row[1]])])
df2.head(10)
看更多先前的回應...收起先前的回應...
kevin543 iT邦新手 5 級 ‧ 2019-08-18 22:08:13 檢舉

謝謝回復 , 執行有問題 , 是我做錯嗎 ?

https://ithelp.ithome.com.tw/upload/images/20190818/20119742sNAMk66WEp.png

dragonH iT邦超人 5 級 ‧ 2019-08-18 22:17:40 檢舉

no module named pandas

跟你上面遇過的 requests 應該一樣

都是沒裝 module

然後這位大大的作法是直接用 pandas

不是像你說的用取完資料存入 mysql

kevin543 iT邦新手 5 級 ‧ 2019-08-19 09:11:35 檢舉

是要移除下面嗎 ? 但還是不行
pip uninstall numpy
pip uninstall pandas

https://ithelp.ithome.com.tw/upload/images/20190819/20119742DLHOrgpJ3l.png

dragonH iT邦超人 5 級 ‧ 2019-08-19 09:29:11 檢舉

你移除 pandas 要做啥...

然後他也說你並沒有裝 pandas

資料存入 mysql,Pandas 只要一行指令(to_sql):

# 建立資料庫連線
from sqlalchemy import create_engine
engine = engine = create_engine('mysql://root:@localhost/testdb?charset=utf8mb4')

df2.to_sql('daily_quote', con=engine,if_exists='append', index=False)

完整程式重新整理如下:

import pandas as pd
df=pd.read_json (r'https://tcgbusfs.blob.core.windows.net/blobyoubike/YouBikeTP.json')

for i, (index, row) in enumerate(df.iterrows()):
    if i == 0:
        df2 = pd.DataFrame([df.iloc[0,1]])
    else:
        df2 = pd.concat([df2, pd.DataFrame([row[1]])])

# 建立資料庫連線
from sqlalchemy import create_engine
engine = engine = create_engine('mysql://root:@localhost/testdb?charset=utf8mb4')

df2.to_sql('daily_quote', con=engine,if_exists='append', index=False)
kevin543 iT邦新手 5 級 ‧ 2019-08-19 14:34:17 檢舉

https://ithelp.ithome.com.tw/upload/images/20190819/20119742XvnJ5SDDm1.png

https://ithelp.ithome.com.tw/upload/images/20190819/20119742faoGBoxXe0.png

在 DOS 輸入
pip install pandas
碰到 No module named XXX, 就安裝 XXX。

0
BeEvil_Y
iT邦新手 4 級 ‧ 2019-08-25 15:41:23

https://github.com/hiroshiyui/youbike
從零時政府G0V轉貼

我要發表回答

立即登入回答