如何使用BeautifulSoup提取div标签内文本?提取返回None如何解决
问题根因
你使用urllib+BeautifulSoup抓取返回None的核心原因是:
- Binance交易页面的价格数据属于前端JavaScript动态渲染内容,urllib发送的普通HTTP请求只能拿到未执行JS的静态初始HTML,该静态源码中不存在你要查找的
class="subPrice"的div标签,因此find方法返回None,调用get_text()会直接报错。
你后续使用Selenium能成功获取数据,是因为Selenium会调用真实浏览器内核,会等待页面JS执行完成、DOM完全渲染后再提取内容,自然能拿到动态生成的价格元素。
数据格式处理
拿到完整的价格字符串$47,864.58后,你可以直接通过字符串切片得到需要的$47,864.5:
full_price = "$47,864.58" target_price = full_price[:-1] # 移除最后一位字符,输出结果为$47,864.5
替代优化方案(可选)
如果不想使用Selenium(占用资源较高),你可以直接调用Binance公开的现货行情接口获取价格,请求效率更高,返回的是结构化JSON数据无需解析HTML:
import requests res = requests.get("https://api.binance.com/api/v3/ticker/price?symbol=BTCUSDT") price_data = res.json() # 格式化输出成你需要的带美元符号、千分位、保留一位小数的格式 formatted_price = f"${float(price_data['price']):,.1f}" print(formatted_price)
内容的提问来源于stack exchange,提问作者Ahmed Nayeem
相关产品推荐
相关产品推荐

