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

如何从爬取的JSON字符串提取信息并生成Pandas DataFrame(Python)

问题描述

尝试从足球网站FotMob爬取数据,使用requests和BeautifulSoup获取HTML后,从__NEXT_DATA__标签中得到一段JSON格式文本,片段如下:

{"id":9902,"teamId":9902,"nameAndSubstatValue":{"name":"Ipswich Town","substatValue":10},"statValue":"5.2","rank":13,"type":"teams","statFormat":"fraction","substatFormat":"number"},{"id":8283,"teamId":8283,"nameAndSubstatValue":{"name":"Barnsley","substatValue":5},"statValue":"5.2","rank":14,"type":"teams","statFormat":"fraction","substatFormat":"number"}

使用的爬取代码:

url = "https://www.fotmob.com/leagues/108/stats/season/17835/teams/expected_goals_team/league-one-teams"
r=requests.get(url)
html_doc = r.text
soup = BeautifulSoup(html_doc)
for p in soup.find_all('script',attrs={'id':'__NEXT_DATA__'}):
    print(p.text)

需要提取其中的statValue、name和substatValue字段,并存入Pandas DataFrame。

解决方案

步骤说明

  1. 解析JSON数据:将__NEXT_DATA__标签中的文本用json.loads()转换为Python可操作的字典结构。
  2. 定位目标数组:在解析后的字典中,团队统计数据通常位于props.pageProps.data.stats.entries路径下(若网站结构更新,可通过打印完整字典调整路径)。
  3. 提取指定字段:遍历数据数组,逐个取出所需字段,注意name和substatValue嵌套在nameAndSubstatValue字典中。
  4. 生成DataFrame:将提取的字段整理为列表,传入pd.DataFrame()生成结构化表格。

完整代码

import requests
from bs4 import BeautifulSoup
import json
import pandas as pd

url = "https://www.fotmob.com/leagues/108/stats/season/17835/teams/expected_goals_team/league-one-teams"
r = requests.get(url)
html_doc = r.text
soup = BeautifulSoup(html_doc, 'html.parser')

# 提取并解析__NEXT_DATA__中的JSON
next_data = soup.find('script', attrs={'id': '__NEXT_DATA__'}).text
data_dict = json.loads(next_data)

# 定位团队统计数据数组
stats_entries = data_dict['props']['pageProps']['data']['stats']['entries']

# 提取目标字段
extracted_data = []
for entry in stats_entries:
    extracted_data.append({
        '球队名称': entry['nameAndSubstatValue']['name'],
        '预期进球值': entry['statValue'],
        '附加统计值': entry['nameAndSubstatValue']['substatValue']
    })

# 转换为DataFrame
df = pd.DataFrame(extracted_data)
print(df)

注意事项

  • 若网站数据结构更新,需重新定位stats_entries的路径(可通过print(data_dict)查看完整结构后调整)。
  • 可根据需求自定义字段名称,比如将中文键名改为英文。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 15:34:43