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

使用Python爬取斯图加特证交所债券表格返回空列表求助

问题原因及解决方案

原因分析

你用requests直接获取的是静态HTML页面,而目标网站的债券表格数据是通过JavaScript异步加载的,静态页面里根本没有表格元素,所以BeautifulSoup找不到对应节点,返回空列表。

解决方法

方案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
import time

URL = 'https://www.boerse-stuttgart.de/en/tools/finder-tools/bonds/?dateIssue.min=2022-09-28&dateIssue.max=2022-09-28'

# 初始化Chrome浏览器(需提前安装对应版本的chromedriver)
driver = webdriver.Chrome()
driver.get(URL)

# 等待表格加载完成,最长等待10秒
try:
    WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CLASS_NAME, "bsg-table"))
    )
    time.sleep(2)  # 留缓冲时间确保数据加载完全
    page_source = driver.page_source
    soup = BeautifulSoup(page_source, 'html.parser')
    table = soup.find(class_="bsg-table bsg-table--tablesaw tablesaw-swipe")
    print(table)
finally:
    driver.quit()

方案2:直接请求数据接口(更高效)

打开浏览器F12进入开发者工具,在Network标签筛选XHR请求,能找到加载表格数据的API接口,直接请求接口拿JSON数据,无需解析HTML:

import requests

api_url = "https://www.boerse-stuttgart.de/api/instruments/finder/bonds"
params = {
    "dateIssue.min": "2022-09-28",
    "dateIssue.max": "2022-09-28",
    "limit": 20,
    "offset": 0
}

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": "application/json"
}

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

注意事项

  • 使用Selenium时,需保证浏览器驱动版本和浏览器版本一致,避免兼容性问题。
  • 直接请求接口时,要模拟浏览器的请求头(比如User-Agent),防止被网站拦截;接口参数可能会随网站更新变化,需定期验证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 10:15:47