我正在尝试编写的当前代码是确定一个人最近的加密交易是否是他们接收资金或发送资金,以及他们是否发送了多少钱。
我当前编写的代码是
def getRecentTransactionInfo(cryptoabbr, address):
url = f"https://{cryptoabbr}.tokenview.io/en/address/{address}"
html_text = requests.get(url).text
inp, out = re.search(r'value:"([^"]+).*?value:"([^"]+)', html_text).groups()
print(inp) # This prints the amount sent to the wallet if they were the output
这会打印交易中发送和接收的金额,但不会说明是谁拥有这些值。我一直无法找到检索数据的方法。
我用来测试的链接是:“https://ltc.tokenview.io/en/address/M8T1B2Z97gVdvmfkQcAtYbEepune1tzGua”
网站上的输入是发送了多少,输出是收到了多少。我不确定在哪里可以找到数据,但我相信它位于我用来获取输入输出量的 json 中。
js2py
来解析页面内嵌入的 javascript 数据:
import re
import js2py
import requests
def getRecentTransactionInfo(cryptoabbr, address):
url = f"https://{cryptoabbr}.tokenview.io/en/address/{address}"
html_text = requests.get(url).text
js_func = re.search(r"window\.__NUXT__=(\(.*?\)\);)", html_text).group(1)
data = js2py.eval_js(js_func)
# return first transaction:
return data["data"][1]["sourceData"][0]["txs"][0]
print(getRecentTransactionInfo("ltc", "M8T1B2Z97gVdvmfkQcAtYbEepune1tzGua"))
打印:
{
"block_no": 2607927,
"confirmations": 4359,
"fee": "0.0000113",
"height": 2607927,
"index": 800,
"inputCnt": 1,
"inputs": [
{
"address": "LaMKADY7ozZXt7BuLogijtwJzNEXy42fGv",
"input_no": 0,
"received_from": {
"output_no": 1,
"txid": "b1efc2174229b547e2c44e1823ccbb18252d2ad9ab7296ba52e5093f18d6e211",
},
"value": "0.02387814",
}
],
"network": "LTC",
"outputCnt": 2,
"outputs": [
{
"address": "LaMKADY7ozZXt7BuLogijtwJzNEXy42fGv",
"output_no": 0,
"value": "0.02319739",
},
{
"address": "M8T1B2Z97gVdvmfkQcAtYbEepune1tzGua",
"output_no": 1,
"value": "0.00066945",
},
],
"time": 1704176352,
"txid": "3cad38d66fdb1a40f20c82f0f55211a75bd8720bc2c71a286af32170f56eae9b",
"type": "tx",
}