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

如何用Python和Pandas爬取Morningstar指定页面的关键统计表格

爬取Morningstar估值表格并导入Jupyter Notebook

步骤1:安装必要依赖

在Jupyter的代码单元格或终端中安装所需库:

pip install requests beautifulsoup4 pandas

步骤2:发送请求并解析页面

Morningstar会拦截无标识的请求,需添加请求头模拟浏览器访问:

import requests
from bs4 import BeautifulSoup
import pandas as pd

# 目标URL
url = "https://www.morningstar.com/stocks/xidx/smsm/valuation"

# 模拟浏览器请求头
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"
}

# 发送请求并检查状态
response = requests.get(url, headers=headers)
response.raise_for_status()

# 解析HTML内容
soup = BeautifulSoup(response.text, "html.parser")

步骤3:定位并提取表格数据

根据页面结构,目标估值表格的class为snapshot-data-table,直接定位提取:

# 找到目标表格
table = soup.find("table", class_="snapshot-data-table")

# 提取表头文本
table_headers = [th.get_text(strip=True) for th in table.find_all("th")]

# 提取每行数据
table_rows = []
for row in table.find_all("tr")[1:]:  # 跳过表头行
    row_data = [td.get_text(strip=True) for td in row.find_all("td")]
    if row_data:
        table_rows.append(row_data)

步骤4:转换为DataFrame用于分析

将提取的数据转为Pandas DataFrame,即可在Jupyter中直接使用:

# 生成DataFrame
valuation_df = pd.DataFrame(table_rows, columns=table_headers)

# 展示表格数据
display(valuation_df)

# 可选:保存为本地文件
valuation_df.to_csv("smsm_valuation_data.csv", index=False)

额外说明

  • 如果上述方法拿不到数据,说明页面是动态渲染的,可改用selenium模拟浏览器加载:先安装pip install selenium,再下载对应浏览器的驱动(如ChromeDriver),通过浏览器实例获取页面源码。
  • 频繁请求可能触发反爬,建议添加请求间隔(time.sleep(2)),避免短时间内重复访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 21:00:58