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

python 爬蟲 抓取 監控 比特幣 乙太幣 錢包數量

 

之前強者同學委託流浪貓,希望我找個方式來監控冷錢包 (Cool Wallet) 的地址。雖然用支援多幣種的錢包 (Trust Wallet, Coinomi) 或硬體錢包來存錢是最簡單的方法,但他還是想用最『原生』的方式來存錢。

 

 

現代問題要用現代手段!

 

畢竟用手動的方式,透過區塊鏈瀏覽器定期檢視地址十分麻煩且枯燥乏味,因此這種繁雜的任務就交給 Python 來執行吧!本篇我將直接講述程式碼的運作方式,至於 Python 與相關模組的安裝則就請各位自行去研究了。

 

 

安裝 Python 的 selenium 模組

pip install selenium

 

 

下載 chromedriver

爬蟲的運作主要是透過 chromedriver 這個東東執行的,因此請先下載並將其放置在合適的地方。翠維尼

 

ChromeDriver - WebDriver for Chrome

 

 

加密貨幣地址 Python 爬蟲

這隻爬蟲會抓取目標地址特定的 class 名稱來獲得資料,例如 driver.find_element(By.CLASS_NAME, "efbkvS" 。最後用正規表達式 (Regular Expression) 將資料整理成『加密貨幣數量』與『美金總價』。

 

然而這些有點像隨機碼的 class 名稱未來可能會變動,因此之後可能會改用 XPATH 來抓資料。

 

from selenium import webdriver  
from selenium.webdriver.common.by import By  
from selenium.webdriver.chrome.service import Service  
import re  
import time  

# 輸入 chromedriver 執行檔的位置
s = Service("/home/user/chromedriver/chromedriver")  
driver = webdriver.Chrome(service=s)  
  
  
# BTC  
# 加上時間註記、換行  
print("\n" + time.strftime('%Y-%m-%d, %H:%M:%S'), file=open('btc.csv', 'a'), end=', ')  

# 透過 coinmarketcap 的區塊鏈瀏覽器檢視
btc_coin = ['https://blockchain.coinmarketcap.com/address/bitcoin/地址'  
            ]  
  
for i in btc_coin:  
    driver.get(i)  
    time.sleep(10)  
    btc_Token_n = driver.find_element(By.CLASS_NAME, "efbkvS")  
    btc_Token_n_2 = re.sub(r'[\n\t\s]*|[a-zA-Z]|\(|\)|', '', btc_Token_n.text.replace("$", ","))  
    print(btc_Token_n_2, end='', file=open('btc.csv', 'a'))  
  

# DOGE  
# 加上時間註記、換行  
print("\n" + time.strftime('%Y-%m-%d, %H:%M:%S'), file=open('doge.csv', 'a'), end=', ')  
  
doge_coin = ['https://blockchair.com/dogecoin/address/地址'  
             ]  
  
for i in doge_coin:  
    driver.get(i)  
    time.sleep(10)  
    doge_Token_n = driver.find_element(By.CLASS_NAME, "account-hash__balance__values")  
    doge_Token_n_2 = re.sub(r'[\n\t\s]*', '', doge_Token_n.text)  
    print(re.sub('DOGE|USD', ', ', doge_Token_n_2), end='', file=open('doge.csv', 'a'))  
  
# ETH  
# 加上時間註記、換行  
print("\n" + time.strftime('%Y-%m-%d, %H:%M:%S'), file=open('eth.csv', 'a'), end=', ')  
  
eth_coin = ['https://etherscan.io/address/地址'  
            ]  
  
for i in eth_coin:  
    driver.get(i)  
    time.sleep(10)  
    eth_Token_n = driver.find_element(By.CLASS_NAME, "card-body")  
    eth_Token_n_2 = re.sub(r'[\n\t\s]*|[a-zA-Z]|:|', '', eth_Token_n.text.replace("$", ",")) 
    print(eth_Token_n_2[0:20], ", ", eth_Token_n_2[21:27], end='', file=open('eth.csv', 'a'))  
  
# ATOM Cosmos  
# 加上時間註記、換行  
print("\n" + time.strftime('%Y-%m-%d, %H:%M:%S'), file=open('cosmos.csv', 'a'), end=', ')  
  
cosmos_coin = ['https://www.mintscan.io/cosmos/account/地址',  
               ]  
  
for i in cosmos_coin:  
    driver.get(i)  
    time.sleep(10)  
    Token_n = driver.find_element(By.CLASS_NAME, "TokenRow_value__1eEXO")  
    USD_pr = driver.find_element(By.CLASS_NAME, "AccountInfo_totalValue__E0ehd")  
    USD_price = str(USD_pr.text)  
    s = ', '  
    Result = re.sub(r'[\n\t\s]*|,', '', str(Token_n.text)) + s + re.sub('\$', '', str(USD_price)) + s  
    print(Result, end='', file=open('cosmos.csv', 'a'))  

  
driver.close()


 

 

延伸閱讀

用 Python 讀取和整理 xml 檔內特定資料

用 ImageJ 自動化腳本,將圈選的地物目標批次儲存成樣本圖片 (ROI)

用 JavaScript 修改 Blogger 網站上的 IPFS 圖片閘道器位置 (Gateway)

謹慎勇者?加密貨幣手機熱錢包 (Trust Wallet, Coinomi) 的注意事項

更多比特幣與乙太幣教學

更多區塊鏈

 

 

 

 

留言

這個網誌中的熱門文章