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

使用Python爬取Mega Millions头奖金额时遇IndexError问题求助

解决Mega Millions头奖爬取的IndexError问题

错误原因

IndexError: list index out of range 表示你写的绝对XPath路径未匹配到任何DOM元素,常见诱因有两个:

  • 网站DOM结构已更新,原层级路径失效
  • 网页请求未正常获取内容(比如被反爬拦截,返回空页面或错误页面)

解决方案

1. 确保正确获取网页内容

多数网站会拦截无请求头的爬虫,需添加模拟浏览器的请求头,同时检查请求状态码确认是否成功。

2. 使用稳健的相对XPath定位

绝对XPath依赖严格的DOM层级,极易因网站布局调整失效。改用元素的类名、ID等属性定位,稳定性更强。

完整可运行代码

import requests
from lxml import html

def get_mega_millions_jackpot():
    url = "https://lottery.sd.gov/game/mega-millions/"
    # 添加请求头模拟浏览器访问
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"
    }
    
    # 发送请求
    response = requests.get(url, headers=headers)
    if response.status_code != 200:
        print(f"请求失败,状态码:{response.status_code}")
        return None
    
    # 解析HTML
    tree = html.fromstring(response.content)
    
    # 根据class定位头奖金额元素(若页面结构更新,需同步调整此处XPath)
    jackpot_elements = tree.xpath('//div[@class="jackpot-number"]')
    if not jackpot_elements:
        print("未找到头奖金额对应的元素,请检查页面结构是否更新")
        return None
    
    # 提取并返回金额
    return jackpot_elements[0].text.strip()

# 调用函数并打印结果
jackpot_amount = get_mega_millions_jackpot()
if jackpot_amount:
    print(f"Mega Millions 当前头奖金额:{jackpot_amount}")

后续维护提示

若之后再次出现找不到元素的情况,按以下步骤排查:

  1. 打开目标网站,按下F12打开开发者工具
  2. 在页面上找到头奖金额元素,右键选择「检查」
  3. 查看该元素的class、ID或其他属性,更新代码中的XPath表达式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 05:25:52