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

为何无法用BeautifulSoup获取币安公告页面指定class的文本元素?

无法捕获Binance公告页面元素的原因及解决办法

核心原因

  • 页面动态渲染:Binance的公告页面依赖JavaScript动态加载内容,直接用requests.get()获取的是初始静态HTML,此时目标元素尚未渲染,BeautifulSoup无法检测到。
  • 动态CSS类名:css-f94ykk这类带随机后缀的类名,通常是前端框架(如React)的CSS Modules生成的,类名会随页面版本或加载会话动态变化,固定写死类名的方式不可靠。
  • 反爬机制拦截:Binance会校验请求合法性,缺少必要请求头(如User-Agent)或有效Cookie时,服务器可能返回不完整内容或空白页面,导致解析失败。

解决办法

1. 使用动态渲染工具(推荐)

用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
from bs4 import BeautifulSoup

url = "https://www.binance.com/en/support/announcement/new-cryptocurrency-listing?c=48&navId=48"
driver = webdriver.Chrome()  # 需提前安装对应版本的ChromeDriver
driver.get(url)

# 等待目标元素加载完成
wait = WebDriverWait(driver, 10)
wait.until(EC.presence_of_element_located((By.CLASS_NAME, "css-f94ykk")))

# 解析渲染后的页面源码
soup = BeautifulSoup(driver.page_source, "html.parser")
items = soup.find_all(class_="css-f94ykk")

# 提取文本存入集合
text_set = {item.get_text(strip=True) for item in items if item.get_text(strip=True)}

driver.quit()
print(text_set)

2. 直接调用API接口

打开浏览器开发者工具(F12),切换到Network标签,刷新页面后查找加载公告列表的API接口,直接请求API获取结构化数据,这种方式比解析HTML更高效稳定。

3. 优化请求头(仅适用于静态内容场景)

如果坚持使用requests,添加完整请求头模拟浏览器请求:

import requests
from bs4 import BeautifulSoup

url = "https://www.binance.com/en/support/announcement/new-cryptocurrency-listing?c=48&navId=48"
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36",
    "Accept-Language": "en-US,en;q=0.9",
    "Referer": "https://www.binance.com/"
}

response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, "html.parser")
# 若仍无法找到元素,说明页面是动态渲染,需使用方法1或2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 20:55:36