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

使用Pandas解析alreits.com/screener页面表格失败问题求解

问题原因

该页面表格数据为客户端JavaScript动态渲染,requests发起的静态请求仅能获取到初始空白页面框架,不包含实际表格数据,因此pandas、BeautifulSoup4均无法解析到目标内容。

可行解决方案

这里提供两种可直接落地的实现方式:

方案1:模拟浏览器渲染获取(兼容性最高)

使用Playwright模拟浏览器访问页面,等待表格渲染完成后再提取数据,适配所有动态渲染场景。

依赖安装

pip install playwright pandas
playwright install chromium

实现代码

import pandas as pd
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    # 启动无头浏览器
    browser = p.chromium.launch(headless=True)
    page = browser.new_page()
    page.goto("https://alreits.com/screener", wait_until="networkidle")
    
    # 等待目标表格渲染完成
    page.wait_for_selector("#__next > div.MuiContainer-root.MuiContainer-maxWidthLg > div.MuiBox-root.jss9.Card__CardContainer-feksr6-0.fpbzHQ.ScreenerTable__CardContainer-sc-1c5wxgl-0.GRrTj > div > table")
    
    # 直接获取表格内容转DataFrame
    table_html = page.locator("#__next > div.MuiContainer-root.MuiContainer-maxWidthLg > div.MuiBox-root.jss9.Card__CardContainer-feksr6-0.fpbzHQ.ScreenerTable__CardContainer-sc-1c5wxgl-0.GRrTj > div > table").inner_html()
    df = pd.read_html(f"<table>{table_html}</table>")[0]
    
    # 提取需要的字段:股票代码、板块、评分、市值,可按需调整列名
    target_df = df[["名称", "板块", "评分", "市值"]]
    print(target_df)
    
    browser.close()

方案2:直接调用数据接口(性能更高)

通过浏览器开发者工具抓包可获取到表格数据的后端接口,直接请求JSON数据解析即可,无需启动浏览器。

实现代码

import requests
import pandas as pd

url = "https://api.alreits.com/v1/screener"
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
}
response = requests.get(url, headers=headers)
data = response.json()

# 解析JSON数据转DataFrame
df = pd.DataFrame(data["items"])
# 提取目标字段,可按需调整
target_df = df[["ticker", "sector", "rating", "market_cap"]]
# 可重命名为中文列名
target_df.columns = ["股票代码", "板块", "评分", "市值"]
print(target_df)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 09:57:00