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

BeautifulSoup爬取表格提示No tables are found 状态码类名均正常求助

问题原因

你要爬取的目标表格属于JavaScript动态渲染内容:

  • requests库只能获取页面初始的静态HTML源码,该页面初始源码里并没有你指定类名的table标签,这类标签是页面加载完成后,由JavaScript异步请求接口拉取数据后才生成插入到DOM里的,所以BeautifulSoup从初始静态源码里自然检索不到对应元素。
  • 你可以自行验证:在浏览器里右键选择「查看网页源代码」,直接在源码里搜索你写的table类名table table-striped display dataTable,会发现完全搜不到对应内容,这就印证了静态源码里没有该元素。
解决方案

方案1:直接抓取后端数据接口(推荐,效率最高)

打开浏览器开发者工具的网络面板,筛选XHR/Fetch请求,刷新页面就能找到用来加载排行榜数据的后端接口,直接请求该接口拿结构化的JSON数据即可,不需要解析HTML,性能和稳定性都更高。

方案2:使用渲染工具模拟浏览器加载

如果一定要爬取渲染后的HTML结构,可以用支持JS渲染的工具替换requests:
可使用selenium、playwright这类自动化测试工具,模拟真实浏览器加载页面,等JS执行完成后再提取页面元素。
示例代码片段(以selenium为例):

from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time

chrome_options = Options()
chrome_options.add_argument("--headless=new") # 无头模式,不弹出浏览器窗口
chrome_options.add_argument("user-agent=Mozilla/5.0")
driver = webdriver.Chrome(options=chrome_options)

url = 'https://sk1er.club/leaderboards/guild_level'
driver.get(url)
time.sleep(3) # 等待JS渲染完成,也可使用显示等待优化效率

soup = BeautifulSoup(driver.page_source, 'html.parser')
table = soup.find('table', class_ = "table table-striped display dataTable")
print(table)
driver.quit()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 20:27:01