You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python抓取span类中的比特币USD价格数据?

解决GDAX BTC-USD价格自动抓取并定时刷新的问题

嘿,看起来你已经搞定了价格提取的核心逻辑,就差把硬编码的HTML换成自动获取的页面内容,再加上定时刷新的功能了!咱们一步步来完善代码:

1. 替换硬编码HTML为真实页面请求

你之前手动写死了html变量,现在需要用urllib主动请求目标页面的内容。另外为了避免被网站的反爬机制拦截,建议给请求加上浏览器伪装的请求头:

from urllib.request import Request, urlopen

# 替换原来的硬编码html行
req = Request(url, headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'})
uClient = urlopen(req)
html = uClient.read()
uClient.close()

2. 优化价格提取逻辑

页面上对应BTC价格的span应该只有一个,用find()代替find_all()更高效,同时加上判断避免找不到元素时报错:

price_span = soup.find('span', class_='MarketInfo_market-num_1lAXs')
if price_span:
    price = price_span.text.replace('USD', '').strip()
    print(f"当前BTC-USD价格: {price}")
else:
    print("警告:未找到目标价格元素,请检查页面类名是否更新")

3. 添加定时刷新功能

用time模块的sleep()函数实现每30秒刷新一次的循环逻辑,把整个抓取流程放进循环里:

完整代码整合

from urllib.request import Request, urlopen
from bs4 import BeautifulSoup
import time

url = 'https://www.gdax.com/trade/BTC-USD'

while True:
    # 伪装浏览器请求页面
    req = Request(url, headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'})
    uClient = urlopen(req)
    html = uClient.read()
    uClient.close()
    
    # 解析HTML
    soup = BeautifulSoup(html, "html.parser")
    price_span = soup.find('span', class_='MarketInfo_market-num_1lAXs')
    
    # 提取并打印价格
    if price_span:
        price = price_span.text.replace('USD', '').strip()
        print(f"当前BTC-USD价格: {price}")
    else:
        print("警告:未找到目标价格元素,请检查页面类名是否更新")
    
    # 等待30秒后再次刷新
    time.sleep(30)

额外注意点

  • 如果运行后发现找不到价格元素,大概率是页面是JavaScript动态渲染的,urllib只能获取静态HTML。这种情况下可以换成selenium或requests-html这类能处理动态内容的库。
  • 频繁请求可能会触发网站的IP封禁,建议适当延长刷新间隔,或者添加随机延迟。

内容的提问来源于stack exchange,提问作者cmd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:43:47