学习《Automate the Boring Stuff》爬取Binance BTC价格时CSS选择器返回0
问题原因
你拿到的返回值为0是因为币安官网的价格数据是动态渲染的:
- 你用
requests拉取的是页面初始静态HTML,此时价格相关节点还没有被JavaScript填充实时数据,初始占位值就是0 - 你用来定位的CSS类名
css-11d5f40属于前端框架自动生成的动态类名,平台随时可能更新调整,定位稳定性极差
最优解决方案
不需要爬取前端页面,直接调用币安公开的现货价格接口即可,无需鉴权就能直接获取结构化的实时价格数据,示例代码如下:
import requests # 调用币安公开现货价格接口,指定交易对为BTC/BUSD res = requests.get('https://api.binance.com/api/v3/ticker/price?symbol=BTCBUSD') res.raise_for_status() price_info = res.json() # 输出实时价格 print(price_info['price'])
其他替代方案
如果你确实需要爬取前端页面数据,需要使用支持JavaScript渲染的工具(如Selenium、Playwright),等待页面完全加载完成后再提取对应数据,即可拿到正常的非0价格。同时建议尽量使用元素的固定属性定位,不要依赖动态生成的CSS类名。
内容的提问来源于stack exchange,提问作者Blake Storey
相关产品推荐
相关产品推荐

