主页 > imtoken官网下载2.0 > 如何使用Python调用任意数字资产钱包余额函数
如何使用Python调用任意数字资产钱包余额函数
小编就给大家分享一下如何使用Python获取任意数字资产钱包的余额函数。 希望大家看完这篇文章后有所收获。 一起来讨论吧!
Python主要用来做什么
Python主要用于: 1. Web开发; 2、数据科学研究; 3、网络爬虫; 4、嵌入式应用开发; 5、游戏开发; 6. 桌面应用开发。
当我们的资产放在交易所后,我们可以使用Python通过链接交易所的API来监控余额。
当资产在钱包里,如何监控余额?
任何数字资产都可以使用区块浏览器查询余额,那么我们只需要从这里开始,使用Python调用区块浏览器查询余额即可实现对所有资产的余额监控。
数字资产区块链浏览器有很多,比如比特币区块浏览器btc.com、以太坊区块浏览器etherscan.io、ATOM区块浏览器mintscan.io、PCX区块浏览器scan.chainx.org等。
块浏览器根据是否提供API可以分为两类。 做的好的话,API会被标记出来供大家查询。 如果做得粗糙,它不会明确告诉你API,但是可以通过爬虫找到。
让我们一一分析:
1、提供API查询的区块浏览器
1. 比特币区块浏览器 btc.com
首页下有API,并配有文档
这种获取比较简单,根据单据中可以查询余额的地址获取即可。
例如在btc.com中找到获取地址,最后一个字符串是比特币地址,可以通过Python中的requests.get()返回相关数据,如下:
请注意,每种货币的余额单位都不同。 您可以根据自己的钱包余额进行调整。 例如,上述余额需要除以 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余额查询
这里还有一个说明文档,和上面的略有不同,需要获取一个APIKEY,类似于交易所应用API,需要注册。
我们在文档中可以看到,获取以太坊余额的地址为: ,需要查询的以太坊地址地址和申请的apikey。 我们可以将这两个设置为变量,方便修改。
下一步是处理数据。 还要注意单位的区别。 余额需要除以10e17才能转换为正常余额。
我们还可以监控余额,比如当钱包充值,ETH余额大于10时,会进行提醒。
ETH上也有大量数字货币是ERC20代币,如何获取它们的余额?
在描述文件中,我们可以找到token这一栏,上面写着获取地址是 。 仔细对比后,你会发现比ETH余额多了一个智能合约合约地址。 这种查询方式也很简单。 搜索OMG等代币时,会出现合约地址。
这样,将三个输入组合成一个新的获取地址,就可以得到token的余额。 你要查询的以太坊地址,你申请的apikey,token的合约地址。 我们可以将这三个设置为变量,方便修改。
完整代码如下:
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)
2. 不提供API的区块浏览器
这种方法有点复杂,需要爬虫来获取地址。
我们以最近流行的chainx代币PCX为例,因为该币种采用锁仓BTC挖矿方式获取其代币PCX,提取利息需要用11倍左右的PCX进行投票。 意思是让你买PCX。 我在它的内网(链上交易)低价下单购买。 希望交易完成后会有提示。 然后使用程序在区块浏览器中监控我的地址余额。 一旦交易完成,它会立即进行利息投票。
没有体验过以上的朋友可能会觉得很复杂,没关系怎么查比特币地址余额,我们的目的就是用程序来获取自己的钱包余额。
PCX 区块浏览器地址为 . 输入钱包地址后,即可获取账户详情。 如何使用程序获取余额?
在谷歌浏览器中按F12进入开发者模式怎么查比特币地址余额,点击Network,XHR,刷新。
我们发现和balance一样有balance信息,那么我们只需要找到请求头信息就可以得到
点击Headers可以找到需要的信息,如下
这样,我们就可以获取相关信息,然后对数据进行处理。
我设置的是买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获取任意数字资产钱包余额功能”有了一定的了解。 如果想了解更多,请关注编程笔记行业资讯频道,感谢阅读!