用 Python 把加密貨幣資產數據轉換成 Json 檔

python 加密貨幣爬蟲與 json 資料格式

 


逗點分隔值 (Comma-Separated Values, CSV),是相當通用、簡單的資料格式,也是流浪貓研究 Python 爬蟲時用來存檔的主要方法。但透過加密貨幣區塊鏈瀏覽器所爬到的資料表格,其幣種序列往往是不固定的。

 

假設錢包地址內有 OSMO 與各種 IBC 跨鏈幣共五種加密貨幣,它的欄位會依照「幣種、描述、數量、總價與市場價」的規律排列,因此我們可以用 coin[x+n] 的方式依序 print 出資料。

 

但如果突然多了其他幣種,新的幣不一定會插入到最後一項,反而可能會變成第二或第三順位,這種插隊的狀況會造成 CSV 資料錯位。

 

當然,我們可以用搜尋功能找出包含特定「字串」的變數,並依序印出資料。但這種方法有點太手工,每新增幣種就得修改程式碼。

 

目前流浪貓選擇的解決方法,是採用 JSON 來儲存資料。雖然它產出的檔案稍微大,且不一定能轉成表格 CSV,但優點就是可以存放更為複雜的資料結構,例如巢狀資料。翠維尼

 

而且只要將網頁資料結構的規律解出來,就能直接依其模式儲存資料,不用擔心幣種插隊造成順序錯亂了。

 

ins_json = {time.strftime('%Y-%m-%d %H:%M:%S'): {'Name': res[x], 'Amount': res[x+2], 'Value': res[x+3], 'Price': res[x+4]}}

 

 

完整程式碼

from selenium import webdriver  
from selenium.webdriver.common.by import By  
from selenium.webdriver.chrome.service import Service  
import re  
import time  
import json  
from os import path
  
s = Service("/home/chromedriver")  
driver = webdriver.Chrome(service=s)  

cosmos_coin = ['https://www.mintscan.io/']  # url

for i in cosmos_coin:  
    driver.get(i)  
    time.sleep(5)  
    Token_n = '/html/body/div/main/section/div/div[2]/section[2]/div/div[2]/div[2]'  
  
    try:  
        Token_n_1 = driver.find_element(By.XPATH, Token_n).text  
        Token_com = re.sub(r'[,|$]', '', Token_n_1) 
        Token_n_cl = re.sub(r'\n', ', ', Token_com)    
        Token_n_2 = re.sub(r'\s', '', Token_n_cl)  
    except:  
        Token_n_2 = '0'  
  
    res = Token_n_2.split(",")    
    pri = r'[^/]+(?=/$|$)'   
    f_name = re.findall(pri, i)[0]
    s = ', '
      
filename = f'{f_name}.json'  
  
if path.isfile(filename) is False:  
    print('[]', file=open(f'{f_name}.json', "a"), end='\n')  
    print('No json! Create one!')

for x in range(0, len(res)-1, 5):

ins_json = {time.strftime('%Y-%m-%d %H:%M:%S'): {'Name': res[x], 'Amount': res[x+2], 'Value': res[x+3], 'Price': res[x+4]}}  
  
with open(filename, "r+") as file:  
    data = json.load(file)  
    data.append(ins_json)  
    file.seek(0)  
    json.dump(data, file)

 

 

延伸閱讀

加密貨幣冷錢包監視器 - Python 爬蟲 - v1.0

加密貨幣錢包地址資產監視器 - 用 Python 的 XPath 擷取 html 結構資料 - v2.0

我的 python 筆記與練習範例

更多 Python

讓 Chart js 的 html 讀取電腦內 json資料

 

 

留言