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

使用Python3与bs4抓取Dune.com表格返回None,如何解决?

解决Dune.com表格数据抓取返回None的问题

问题原因

Dune.com的表格内容是通过JavaScript动态渲染的,直接用requests获取的是页面初始的静态HTML,其中并不包含浏览器渲染后的<table>元素,所以BeautifulSoup找不到表格,返回None。

解决方案

方法1:使用浏览器自动化工具(如Selenium)模拟页面加载

通过模拟真实浏览器的行为,等待页面完全渲染后再抓取内容。

  1. 先安装依赖:pip install selenium,并下载对应浏览器的驱动(如ChromeDriver,需与浏览器版本匹配)
  2. 示例代码:
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
import bs4

# 初始化浏览器驱动
driver = webdriver.Chrome()
driver.get('https://dune.com/queries/1144723/1954237')

# 等待表格元素加载完成(最多等待10秒)
wait = WebDriverWait(driver, 10)
wait.until(EC.presence_of_element_located((By.TAG_NAME, 'table')))

# 获取渲染后的页面源码并解析
soup = bs4.BeautifulSoup(driver.page_source, 'html5lib')
table = soup.find('table')

# 提取表格数据示例
if table:
    for row in table.find_all('tr'):
        cols = row.find_all(['td', 'th'])
        print([col.get_text(strip=True) for col in cols])

# 关闭浏览器
driver.quit()

方法2:直接调用Dune的API接口获取数据

浏览器渲染的表格数据通常来自后端API,可通过开发者工具找到对应的接口,直接请求获取结构化数据(效率更高)。

  1. 打开浏览器开发者工具(F12),切换到「Network」标签,刷新页面后筛选「XHR/Fetch」请求,找到返回表格数据的接口(通常包含query、result等关键字)
  2. 复制该接口的URL和必要请求头(如User-Agent、Cookie,若需登录)
  3. 示例代码:
import requests

# 替换为实际找到的API接口URL
api_url = "https://dune.com/api/v1/query/1144723/results"
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36",
    # 若需要登录,从浏览器复制Cookie添加到此处
}

response = requests.get(api_url, headers=headers)
data = response.json()

# 解析JSON数据(结构需根据实际返回调整)
if "result" in data and "rows" in data["result"]:
    for row in data["result"]["rows"]:
        print(row)

注意事项

  • 若目标页面需要登录才能访问,两种方法都需处理登录逻辑:Selenium可模拟手动登录,API方法需携带登录后的Cookie
  • 频繁请求可能触发反爬机制,建议添加请求间隔、使用合理的User-Agent

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 11:20:36