如何用requests获取Tokenview上LTC地址最新交易金额?现有代码返回None
问题原因分析
Tokenview的地址页面交易数据是通过JavaScript动态渲染的,你用requests.get获取的只是页面的静态骨架,并没有包含实际的交易内容,所以BeautifulSoup根本找不到带有input_value类的元素,自然返回None或空列表。
解决方案
方案1:调用Tokenview官方API(推荐)
Tokenview提供了公开API接口,直接调用比网页解析更稳定可靠。你需要先去Tokenview官网申请API密钥,再使用以下代码:
import requests API_KEY = "你的API密钥" BASE_URL = "https://services.tokenview.io/vipapi/address/ltc/transactions" def get_recent_transaction_amount(address): params = { "address": address, "apikey": API_KEY, "page": 1, "pagesize": 1 # 仅获取最新1条交易 } response = requests.get(BASE_URL, params=params) if response.status_code == 200: data = response.json() if data.get("code") == 0 and data.get("data"): latest_tx = data["data"][0] amount = latest_tx.get("amount") print(f"最新交易金额:{amount} LTC") return amount print("获取交易数据失败") return None # 使用示例 get_recent_transaction_amount("M8T1B2Z97gVdvmfkQcAtYbEepune1tzGua")
注:具体API端点和返回字段需参考Tokenview官方文档,确保参数与字段匹配。
方案2:优化Selenium实现通用获取
如果不想用API,可以优化Selenium代码,通过通用选择器适配任意地址:
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC def get_recent_transaction_amount(address): url = f"https://ltc.tokenview.io/en/address/{address}" driver = webdriver.Chrome() # 需确保ChromeDriver路径配置正确 driver.get(url) try: # 等待最新交易的金额元素加载完成 latest_amount = WebDriverWait(driver, 10).until( EC.presence_of_element_located( (By.CSS_SELECTOR, ".transaction-item .input_value") ) ) amount = latest_amount.text.strip() print(f"最新交易金额:{amount}") return amount finally: driver.quit() # 使用示例 get_recent_transaction_amount("M8T1B2Z97gVdvmfkQcAtYbEepune1tzGua")
这里通过CSS选择器定位交易列表第一个元素的金额,只要页面结构不变,就能适配任意地址。
方案3:抓包调用网站内部API
用浏览器开发者工具(F12)抓包,找到页面加载交易数据的内部API接口,直接用requests模拟请求:
import requests def get_recent_transaction_amount(address): # 实际接口需自行抓包确认 url = "https://ltc.tokenview.io/api/address/transactions" headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36", # 需根据抓包结果添加Referer、Cookie等必要请求头 } params = { "address": address, "page": 1, "pageSize": 1 } response = requests.get(url, headers=headers, params=params) if response.status_code == 200: data = response.json() latest_amount = data["list"][0]["amount"] print(f"最新交易金额:{latest_amount} LTC") return latest_amount print("获取失败") return None
注:内部API可能随时变更,且可能需要验证Cookie等参数,稳定性不如官方公开API。
内容的提问来源于stack exchange,提问作者Alex is funny
相关产品推荐
相关产品推荐

