加密貨幣冷錢包監視器 - 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()
延伸閱讀
用 ImageJ 自動化腳本,將圈選的地物目標批次儲存成樣本圖片 (ROI)
用 JavaScript 修改 Blogger 網站上的 IPFS 圖片閘道器位置 (Gateway)
謹慎勇者?加密貨幣手機熱錢包 (Trust Wallet, Coinomi) 的注意事項
留言
張貼留言
由於廣告留言太多,因此改採審核發佈,請耐心等候。
無法留言?請點我