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

如何爬取网页可折叠元素内的隐藏数据?以SEC EDGAR站点为例

你遇到的问题核心是页面内容为动态渲染生成:SEC EDGAR的浏览页面中「Selected Filings」板块的列表数据,是页面加载完成后由JavaScript异步请求后端接口、再渲染插入到DOM中的。你直接用requests请求拿到的是未执行JS的原始静态HTML,此时目标div中只有占位文本,没有实际的ul、li、a标签,因此无法解析到目标链接。

解决方案

方案1:调用官方结构化接口(更稳定高效,推荐)

EDGAR公开了所有公司的filings数据接口,无需爬取前端页面,直接请求接口即可拿到结构化的文件数据,请求规则为:将目标CIK补零到10位后,拼接为对应接口地址即可获取数据。
对应你的需求示例代码如下:

import requests

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'}
# 目标CIK补零到10位为0001084869
cik = "0001084869"
res = requests.get(f"https://data.sec.gov/submissions/CIK{cik}.json", headers=headers)
data = res.json()

# 筛选10-K和10-Q类型的 filings
target_forms = ["10-K", "10-Q"]
base_url = "https://www.sec.gov/Archives/edgar/data/"

for idx, form_type in enumerate(data['filings']['recent']['form']):
    if form_type in target_forms:
        accession_num = data['filings']['recent']['accessionNumber'][idx].replace("-", "")
        file_name = data['filings']['recent']['primaryDocument'][idx]
        # 拼接得到完整的文件链接
        full_url = f"{base_url}{cik.lstrip('0')}/{accession_num}/{file_name}"
        print(full_url)

方案2:使用模拟浏览器加载动态内容

如果你需要直接解析前端页面的DOM结构,可以使用Selenium、Playwright等工具模拟浏览器运行,等待页面JS执行完成、动态内容渲染后再解析DOM。
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 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36")

driver = webdriver.Chrome(options=chrome_options)
driver.get("https://www.sec.gov/edgar/browse/?CIK=0001084869")
# 等待2秒让动态内容加载完成,也可以用显式等待更精准
time.sleep(2)

soup = BeautifulSoup(driver.page_source, 'html.parser')
div_tag = soup.find('div', {"id" : "selected-filings-annualOrQuarterly"})
for a_tag in div_tag.find_all('a', href=True):
    print("https://www.sec.gov" + a_tag['href'])

driver.quit()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 07:15:03