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

Web Scraping求助:如何将抓取数据转换为CSV格式?

解决Web Scraping导出CSV时的None属性问题并生成规整表格

你当前的代码仅完成了页面请求与HTML解析,缺少数据提取和CSV导出的核心环节。另外,多数网站的统计数据会通过API返回JSON格式(对应你提到的开发者工具网络响应数据块),用JSON解析比BeautifulSoup处理HTML更高效,也更容易生成规整表格。以下是分步解决方案:

步骤1:确认数据来源(优先用JSON接口)

打开开发者工具的「网络」标签,刷新页面后定位返回统计数据的API请求(通常以.json结尾,或响应内容为JSON格式),复制该请求的URL替换原页面URL。

步骤2:提取并整理数据

如果是JSON接口,直接用requests获取并解析为Python列表/字典;若数据嵌入HTML,则用BeautifulSoup定位元素提取字段。以下以更适合生成表格的JSON接口为例:

步骤3:处理None值并导出CSV

使用pandas库可快速将结构化数据导出为CSV,自动对齐列,还能轻松处理缺失值(None)。

修改后的完整代码

import requests
import pandas as pd

# 替换为你找到的JSON数据接口URL
API_URL = "<YOUR JSON API URL HERE>"

headers = {
    'accept': '*/*',
    'cookie': 'cookie-consent=true'
}

# 请求并解析JSON数据
response = requests.get(API_URL, headers=headers)
data_list = response.json()

# 清洗数据:将所有None替换为空字符串,避免导出报错
cleaned_data = []
for item in data_list:
    cleaned_item = {key: value if value is not None else "" for key, value in item.items()}
    cleaned_data.append(cleaned_item)

# 生成DataFrame并导出CSV,自动匹配列名(id、game_id等)
df = pd.DataFrame(cleaned_data)
df.to_csv("game_stats.csv", index=False, encoding='utf-8-sig')
print("CSV文件已成功生成!")

若数据在HTML页面中的处理方式

如果数据确实嵌入HTML,需先定位包含数据的元素(如表格行、div块),再逐个提取字段:

import requests
from bs4 import BeautifulSoup
import pandas as pd

URL = "<YOUR PAGE URL HERE>"

headers = {
    'accept': '*/*',
    'cookie': 'cookie-consent=true'
}

page = requests.get(URL, headers=headers)
soup = BeautifulSoup(page.content, 'html.parser')

# 假设数据在class为"stats-item"的div块中,需根据实际页面结构修改选择器
data_blocks = soup.find_all("div", class_="stats-item")

cleaned_data = []
for block in data_blocks:
    # 逐个提取字段,每个字段添加非空判断避免None
    item = {
        "id": block.find("span", class_="id").text.strip() if block.find("span", class_="id") else "",
        "game_id": block.find("span", class_="game-id").text.strip() if block.find("span", class_="game-id") else "",
        # 继续添加剩余43个字段,保持相同的非空判断逻辑
    }
    cleaned_data.append(item)

# 导出CSV
df = pd.DataFrame(cleaned_data)
df.to_csv("game_stats.csv", index=False, encoding='utf-8-sig')

关键注意事项

  • 对所有提取的字段添加非空判断(if ... else ""),彻底避免导出时的None属性报错。
  • 若使用pandas,需先在命令行执行pip install pandas完成安装。
  • 确保列名(id、game_id等)与数据中的键完全对应,保证CSV列匹配正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 07:13:37