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

如何用BeautifulSoup抓取JavaScript渲染的StatusInvest股票数据?

解决JavaScript渲染页面的数据抓取问题(针对statusinvest.com.br/acoes/petr4)

因为BeautifulSoup只能解析静态HTML,处理不了JavaScript动态渲染的内容,给你两个实用的解决办法:

方法一:直接调用网站的API接口(推荐,效率更高)

很多动态渲染的页面其实是通过后台API获取数据再渲染的,你可以直接抓这个API:

  1. 打开浏览器F12进入开发者工具,切换到「Network」标签页,刷新页面
  2. 筛选「XHR」或「Fetch」类型的请求,找包含PETR4或数据相关的请求(比如返回JSON格式的)
  3. 复制该请求的URL、请求头(尤其是User-Agent),用requests库直接请求

示例代码:

import requests

# 替换成你找到的实际API接口URL
api_url = "https://statusinvest.com.br/acao/companyfinancialresult/chartresult?ticker=PETR4&type=1&range=1"
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'
}

response = requests.get(api_url, headers=headers)
if response.status_code == 200:
    data = response.json()
    print(data)  # 这里就是你要的结构化数据,直接提取即可
else:
    print("请求失败,状态码:", response.status_code)

方法二:用Selenium模拟浏览器渲染

如果找不到API,就用Selenium模拟真实浏览器加载页面,等JS渲染完成后再抓取源码:

  1. 先安装Selenium:pip install selenium
  2. 下载对应浏览器的驱动(比如ChromeDriver,要和你的Chrome版本匹配)

示例代码:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from bs4 import BeautifulSoup
import time

# 替换为你的ChromeDriver文件路径
service = Service('chromedriver.exe')  # Windows系统,Mac/Linux换成对应的路径
driver = webdriver.Chrome(service=service)

driver.get('https://statusinvest.com.br/acoes/petr4')
time.sleep(3)  # 等待页面完全渲染,时间可根据实际调整

# 获取渲染后的完整页面源码
page_source = driver.page_source
soup = BeautifulSoup(page_source, 'html.parser')

# 示例:抓取当前股价(根据页面实际元素调整选择器)
price_element = soup.find('strong', class_='value')
if price_element:
    print(f"PETR4当前股价: {price_element.get_text(strip=True)}")

driver.quit()  # 关闭浏览器

注意事项

  • 不要频繁发送请求,避免触发网站反爬机制导致IP被封
  • API接口可能会随网站更新变化,需要定期检查开发者工具里的请求
  • Selenium的驱动版本要和浏览器版本保持一致,否则会报错

内容的提问来源于stack exchange,提问作者Álan Gabriel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 04:30:50