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

BeautifulSoup查找css-开头类的div返回空数组,求解决方案

解决BeautifulSoup无法找到动态加载元素的问题

先确认静态源码里有没有目标元素

requests.get只能拿到服务器返回的静态HTML,如果目标元素是JavaScript动态生成的,静态源码里根本找不到。先把请求到的源码存到本地看看:

requester = requests.get("https://...").text
# 保存源码到本地文件
with open("page_source.html", "w", encoding="utf-8") as f:
    f.write(requester)

打开生成的page_source.html,搜索css-1ksc682或者data-cy="ws-run-btn",要是搜不到,就说明元素是动态加载的,得换方法。

方案一:用Selenium模拟浏览器获取渲染后页面

Selenium会启动真实浏览器,执行页面里的JavaScript,能拿到完全渲染后的页面内容:

from selenium import webdriver
from selenium.webdriver.common.by import By
from bs4 import BeautifulSoup
import time

# 初始化Chrome浏览器(需要提前安装对应版本的chromedriver)
driver = webdriver.Chrome()
driver.get("https://...")
# 等页面加载完成,根据实际情况调整等待时间,也可以用显式等待更精准
time.sleep(3)

# 获取渲染后的完整源码
page_source = driver.page_source
driver.quit()

# 再用BeautifulSoup解析
hsource = BeautifulSoup(page_source, 'lxml')
nono = hsource.find_all("div", {"class": 'css-1ksc682'})
print(nono)

也可以直接用Selenium自带的查找方法,不用BeautifulSoup:

# 通过class查找
elements = driver.find_elements(By.CLASS_NAME, "css-1ksc682")
# 通过data-cy属性查找
elements = driver.find_elements(By.CSS_SELECTOR, '[data-cy="ws-run-btn"]')

方案二:直接调用后端API接口

打开浏览器开发者工具(F12),切换到「Network」标签页,刷新页面后筛选「XHR/Fetch」请求,找到返回目标元素对应数据的接口,直接用requests请求这个接口拿数据,这种方法比Selenium更高效,不需要启动浏览器:

import requests

# 替换成实际找到的API接口地址
api_url = "https://.../api/xxx"
response = requests.get(api_url)
data = response.json()
# 从返回的JSON数据里提取你需要的内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 07:42:55