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

正则提取MacroTrends网站chartData变量报错IndexError如何解决

问题原因

你遇到的IndexError报错由两类原因导致:

  1. 原答案的正则硬匹配了固定数量的\r\n换行符,当前目标页面的chartData变量定义后的换行排版已经变动,原有正则匹配不到任何结果,调用[0]就会触发索引越界
  2. 请求不带User-Agent请求头时会触发网站反爬机制,返回的响应内容不含目标数据,也会导致匹配失败

修正代码

import requests
import re
import json

# 加请求头模拟浏览器访问,绕过基础反爬
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
}
r = requests.get('https://www.macrotrends.net/stocks/charts/TSLA/tesla/pe-ratio', headers=headers)
# 正则去掉末尾固定换行的匹配逻辑,非贪婪匹配到变量赋值的第一个分号即可
p = re.compile(r'var chartData = (.*?);', re.DOTALL)
match_result = p.findall(r.text)
if match_result:
    data = json.loads(match_result[0])
    # 后续处理数据的逻辑写在这里
    print(data)
else:
    print("未匹配到目标数据")

优化说明

调整后的正则不再依赖固定的换行格式,只要网站chartData的变量赋值逻辑不变,就可以正常匹配到完整的JSON内容,兼容性远高于硬匹配换行的写法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 02:27:03