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

使用Beautiful Soup爬取Masslottery刮刮乐中奖数据遇阻求助

解决方案
  • 问题根源:你爬取的页面中,中奖表格是动态加载的,静态HTML里并没有表格数据,因此用BeautifulSoup直接解析返回的内容找不到目标元素。该网站实际通过API接口返回JSON格式的中奖数据,直接请求API会更高效可靠。
  • 实现步骤:
    1. 定位到目标API接口:该网站的中奖数据接口为https://www.masslottery.com/api/winners?game=billion-dollar-extravaganza-2023&page=1(可根据页码修改page参数获取不同页数据)
    2. 使用requests请求API获取JSON数据
    3. 解析JSON中的字段,转换为pandas.DataFrame

以下是完整代码:

import requests
import pandas as pd
from datetime import datetime

# API接口地址,可修改page参数获取不同页数据
api_url = "https://www.masslottery.com/api/winners?game=billion-dollar-extravaganza-2023&page=1"
response = requests.get(api_url)
data = response.json()

# 提取中奖记录数据
winner_items = data["data"]["items"]

# 构造DataFrame所需的字段列表
winner_data = []
for item in winner_items:
    winner_data.append({
        "奖金金额": item["prizeAmount"],
        "中奖日期": datetime.strptime(item["claimedDate"], "%Y-%m-%dT%H:%M:%S").strftime("%Y-%m-%d"),
        "领奖地点": item["retailer"]["name"] if item["retailer"] else "未知",
        "地点城市": item["retailer"]["city"] if item["retailer"] else "未知"
    })

# 生成DataFrame
df = pd.DataFrame(winner_data)
print(df.head())
  • 代码说明:
    • 直接请求API返回JSON格式数据,无需解析HTML表格
    • 提取prizeAmount(奖金)、claimedDate(中奖日期)、retailer下的地点信息
    • 对日期格式进行转换,方便后续处理
    • 处理可能为空的领奖地点数据,避免报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 22:54:55