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

如何将JSON数据提取到Pandas DataFrame?网页新闻标题提取失败求助

我来帮你搞定这个问题!你的代码跑不通主要有两个核心原因:一是URL里的HTML转义字符干扰了请求解析,二是接口返回的JSON结构不是Pandas能直接识别的格式。下面一步步解决:

问题分析与解决方案

1. 先修正URL的转义字符问题

你原URL里的&是HTML的转义字符,实际发起请求时需要替换成普通的&,不然服务器无法正确解析参数。修正后的URL应该是:

urlco = "https://www.mpfinance.com/fin/getlisting.php?block=daily&startissue=20200118&fixiss=1"

2. 处理嵌套的JSON结构,转换为DataFrame

这个接口返回的JSON是一个以nodeid为键的对象,每个键对应一条新闻的详细数据。直接用pd.read_json()会把这些nodeid当成列名,而不是我们需要的行数据。所以得先把JSON对象里的值提取出来,再转成DataFrame。

完整可运行代码

import pandas as pd
import requests

# 修正后的请求URL
urlco = "https://www.mpfinance.com/fin/getlisting.php?block=daily&startissue=20200118&fixiss=1"

# 发送请求获取JSON数据
response = requests.get(urlco)
news_data = response.json()

# 提取所有新闻条目(取JSON对象的所有值),转换为DataFrame
dfA = pd.DataFrame.from_dict(news_data.values())

# 查看前5条数据验证结果
print(dfA.head())

代码细节解释

  • 用requests.get()替代直接pd.read_json():这样能更灵活处理请求(比如后续需要加请求头、处理编码时更方便),也能先确认返回的JSON结构是否正确。
  • news_data.values():把JSON中每个nodeid对应的新闻内容提取出来,形成一个字典列表,这是Pandas能直接解析成行数据的格式。
  • pd.DataFrame.from_dict():将字典列表转换为结构化的DataFrame,每条新闻对应一行,新闻的属性(标题、时间等)对应列。

可选:只提取新闻标题

如果只需要标题字段,可以进一步筛选:

# 只保留标题列
title_df = dfA[['title']]
print(title_df)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 11:17:29