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

使用Python爬取指定网页表格数据失败,无报错仅返回表头,需不借助Selenium爬取全页数据

问题原因

你请求的目标URL是后端数据接口,返回内容为JSON格式的结构化数据,而非预渲染完成的完整HTML页面。页面内的表格行数据是前端拿到接口返回的JSON后,通过JS动态渲染生成的,静态请求返回的内容中仅包含表头的固定HTML结构,因此pd.read_html()只能解析到表头,无法获取实际业务数据。

实现代码(无需Selenium)

直接解析接口返回的JSON数据,同时加入分页逻辑即可爬取全量数据,代码如下:

import requests
import pandas as pd

headers = {
    "User-Agent": "Mozilla/5.0 (X11; CrOS x86_64 12871.102.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.141 Safari/537.36",
    "Accept": "application/json"
}
base_url = "https://www.nse-ebp.com/ebp/rest/placement"
params = {
    "pub": "true",
    "page": 0,  # 页码起始值可根据站点实际规则调整
    "size": 100  # 每页条数可设置为站点允许的最大值,减少请求次数
}
all_data = []

while True:
    resp = requests.get(base_url, headers=headers, params=params)
    resp.raise_for_status()
    json_data = resp.json()
    # 取当前页的表格数据,key可根据接口返回的实际结构调整
    current_page_data = json_data.get("content", [])
    if not current_page_data:
        break
    all_data.extend(current_page_data)
    # 页码自增请求下一页
    params["page"] += 1

# 合并为DataFrame
df = pd.DataFrame(all_data)
print(df)
# 按需导出为csv:df.to_csv("nse_data.csv", index=False, encoding="utf-8-sig")
代码说明
  • 直接请求原始数据接口,无需解析HTML,爬取效率远高于页面元素解析
  • 自动循环处理分页,直到接口返回空数据后停止爬取
  • 若接口返回的字段结构有调整,只需修改json_data.get("content", [])中的key为实际存储数据的字段名即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 15:18:00