溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么使用Python調取任意數字資產錢包余額功能

發布時間:2021-04-27 13:43:26 來源:億速云 閱讀:389 作者:小新 欄目:開發技術

小編給大家分享一下怎么使用Python調取任意數字資產錢包余額功能,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

Python主要用來做什么

Python主要應用于:1、Web開發;2、數據科學研究;3、網絡爬蟲;4、嵌入式應用開發;5、游戲開發;6、桌面應用開發。

當我們的資產放在交易所的時候,可以通過鏈接交易所的API使用Python來監控余額。

那資產放在錢包的時候,如何來監控余額呢?

任何數字資產都可以使用區塊瀏覽器來查詢余額,那我們只要從此著手,用Python調取區塊瀏覽器,來查詢余額就能實現所有資產的余額監控。

數字資產區塊鏈瀏覽器有很多,比如比特幣區塊瀏覽器btc.com,以太坊區塊瀏覽器etherscan.io,ATOM區塊瀏覽器mintscan.io,PCX區塊瀏覽器scan.chainx.org等等。

區塊瀏覽器可以根據是否提供API分為兩大類,做的好的會把API標示出來,供大家查詢。做的粗糙的就不明確告訴你API,但通過爬蟲的方式是可以找出來的。

下面我們逐一分析:

一、提供API查詢的區塊瀏覽器

1.比特幣 區塊瀏覽器 btc.com

在首頁下面有提供API,并配有說明文檔https://btc.com/api-do

怎么使用Python調取任意數字資產錢包余額功能

這種獲取比較簡單,根據文檔中查找可以查詢余額的地址獲取即可。

比如btc.com中找到獲取網址為https://chain.api.btc.com/v3/address/3JvpMTpy6DDp1Um3iEGYpkBaUmJp7ReMR2,最后一串為比特幣地址,通過Python中requests.get( )即可返回相關數據如下:

怎么使用Python調取任意數字資產錢包余額功能

注意余額的單位每個幣種都不一樣,根據自己錢包余額調整即可,比如上述余額實際需要除以10e7(10的7次方)就可得到余額為0.14141195個BTC。

接下來我們就可以監控我們的錢包余額,假設你從別處提到你錢包1個比特幣,那監控什么時候余額大于1個比特幣了,讓程序實現釘釘發消息提醒即可。

完整代碼如下:

import pandas as pd
import random
import ccxt
import threading, time, datetime
import json
import urllib
import datetime
import requests

# 異常監控用
def send_dingding_msg1(content, robot_id='你的釘釘機器人ID'):
  try:
    msg = {
      "msgtype": "text",
      "text": {"content": content + '\n' + datetime.datetime.now().strftime("%m-%d %H:%M:%S")}
    }
    headers = {"Content-Type": "application/json ;charset=utf-8 "}
    url = 'https://oapi.dingtalk.com/robot/send?access_token=' + robot_id
    body = json.dumps(msg)
    status = requests.post(url, data=body, headers=headers)
    if status.status_code == 200:
      return status.json()
    return status
  except Exception as err:
print ( '釘釘發送失敗' , err)

while True:
  try:
    address = '你的比特幣錢包地址' # 比特幣錢包地址
    url = 'https://chain.api.btc.com/v3/address/' + address # 獲取余額地址
    # 可以用f'https://chain.api.btc.com/v3/address/{address}'替代
    response = requests.get(url)
    if response.text: # 發現有時候會出現錯誤導致返回數據為空,加此目的當數據為空時繼續獲取余額
      # print(response.json())
      BTC = float(response.json()['data']['balance']) / 10e7 # 科學計數法,處理返回數據
      print('BTC', BTC)
    else:
      continue
    if BTC > 1: # 當余額大于1時實現釘釘提醒
      print('BTC', BTC)
      content = 'BTC錢包充值到賬' #
      send_msg1 = send_dingding_msg1(content)
      print(send_msg1)
      break
    time.sleep(5)
  except Exception as order_err:
    print("查詢出錯,繼續嘗試", order_err)
    time.sleep(3)

2.以太坊區塊瀏覽器etherscan.io余額查詢

同樣https://etherscan.io/apis此處也配有說明文檔,與上述稍微不同的是它需要獲取APIKEY,類似交易所申請API一樣,需要注冊下。

我們在說明文檔可以看到獲取以太坊余額的地址為:https://api.etherscan.io/api?module=account&action=balance&address=0xddbd2b932c763ba5b1b7ae3b362eac3e8d40121a&tag=latest&apikey=YourApiKeyToken,這里面需要用到你要查詢的以太坊地址address和你申請的apikey, 我們可以把這兩個設成變量,方便更改。

接下來就是處理數據了,同樣要注意單位的不同,余額需要除以10e17才能轉換成正常的。

我們也可以監控余額,比如當充值到這個錢包,ETH余額大于10時實現提醒。

還有一大批數字貨幣是ETH上的ERC20代幣,如何獲得他們的余額呢?

在說明文檔中我們可以找到token一欄,有說明獲取地址為https://api.etherscan.io/api?module=account&action=tokenbalance&contractaddress=0x57d90b64a1a57749b0f932f1a3395792e12e7055&address=0xe04f27eb70e025b78871a2ad7eabe85e61212761&tag=latest&apikey=YourApiKeyToken。仔細對比你會發現比ETH余額多了個智能合約contractaddress地址,這個查詢方法也非常簡單,在https://etherscan.io搜索代幣,比如搜索OMG,就會出現合約地址。

怎么使用Python調取任意數字資產錢包余額功能

這樣把三個輸入組成新的獲取地址,就能獲得代幣的余額。你要查詢的以太坊地址address、你申請的apikey、代幣的合約地址contractaddress。我們可以把這三個設成變量,方便更改。

完整代碼如下:

while True:
  try:
    apikey = '你在https://etherscan.io申請的apikey'
    address = '你的以太坊地址'
    # 查詢以太坊地址
    url1 = 'https://api.etherscan.io/api?module=account&action=balance&address='+address+'&tag=latest&apikey='+apikey

    # 查詢ERC20地址
    contractaddress = '0xd26114cd6EE289AccF82350c8d8487fedB8A0C07' ##OMG合約地址
    url2 = 'https://api.etherscan.io/api?module=account&action=tokenbalance&contractaddress='+ contractaddress+ '&address='+ address+'&tag=latest&apikey='+ apikey
    response1 = requests.get(url1)
    response2 = requests.get(url2)
    # print(response.json())
    asset1 = 'ETH'
    asset2 = 'OMG'
    ban1 = float(response1.json()['result']) / 10e17 # 科學計數法,處理返回數據
    ban2 = float(response2.json()['result']) / 10e17 # 科學計數法,處理返回數據
    print(asset1, ban1)
    print(asset2, ban2)
    if ban1 > 10:
      print(asset1, ban1)
      content = 'ETH錢包充值到賬'
      send_msg1 = send_dingding_msg1(content)
      print(send_msg1)
      break
    time.sleep(5)
  except Exception as order_err:
    print("查詢出錯,繼續嘗試", order_err)
    time.sleep(3)

二,不提供API的區塊瀏覽器

這種方法稍微復雜,需要爬蟲來獲取地址。

我們以最近有點火的chainx代幣PCX為例來說明,因為這個幣種采取了鎖倉BTC挖礦來獲得其代幣PCX,而要想提取利息需要拿利息約11倍的PCX去投票,簡單說就是讓你去買PCX,我在其內網(鏈上交易)掛低價單來買,什么時候成交希望有個提醒,那就用程序監控區塊瀏覽器我地址的余額,一旦成交立馬投票去拿利息。

沒經歷過上面的朋友可能覺得很復雜,沒關系,我們的目的就是用程序獲取其錢包余額。

PCX區塊瀏覽器地址為https://scan.chainx.org/,輸入錢包地址之后就可以獲得賬戶詳情,怎么用程序獲得余額呢?

在谷歌瀏覽器下按F12,進入開發者模式,點擊Network、XHR,然后刷新。

我們發現在balance一樣展開有余額信息,那我們只要找到請求頭部信息就能獲得了

怎么使用Python調取任意數字資產錢包余額功能

點擊Headers找到需要的信息,如下

怎么使用Python調取任意數字資產錢包余額功能

這樣我們就可以獲得相關信息,然后對數據進行處理即可。

我當時設定的是購買35個,所以當數量大于30時用釘釘通知我。

完整代碼如下

while True:
  try:
    url = "https://api.chainx.org.cn/account/你的PCX錢包地址/balance"
    headers = {
      "Content-type": "application/json; charset=utf-8",
      'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36'
    }
    response = requests.get(url, headers=headers)
    balance = response.json()
    # print(balance)
    asset = 'PCX'
    PCX = balance[1]['Free']/100000000 # 此處注意PCX代幣的位置,如果在第0個就改成[0]
    print('PCX', PCX)

    if PCX > 30:
      print('PCX', PCX)
      content = 'PCX購買已到賬,余額為' + str(PCX) # 發一個變量,用str轉換下
      send_msg1 = send_dingding_msg1(content)
      print(send_msg1)
      break
    time.sleep(3)
  except Exception as order_err:
    print("查詢出錯,繼續嘗試", order_err)
    time.sleep(3)

其它不提供API的區塊瀏覽器獲取方式是一樣的。

有了以上的方法,我們就可以用程序獲得任 意區塊瀏覽器地址的余額,并進行監控了。

看完了這篇文章,相信你對“怎么使用Python調取任意數字資產錢包余額功能”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女