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

Python爬取SBIN股票Max Pain值失败:代码问题排查求助

问题分析与解决办法

可能的原因及对应解决方案

1. 网页内容为动态渲染,静态请求无法获取目标元素

这类金融数据网站常通过JavaScript动态加载数据,requests.get()仅能获取初始静态HTML,而Max Pain值是页面加载后由JS生成的,因此静态页面中不存在目标元素。

解决办法:
使用Selenium模拟浏览器加载页面,等待JS渲染完成后再提取元素,示例代码:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

url = "https://www.niftytrader.in/stock-options-chart/sbin"

# 初始化Chrome浏览器(需提前安装对应版本的ChromeDriver)
driver = webdriver.Chrome()
driver.get(url)

try:
    # 等待目标元素加载,最长等待10秒
    max_pain_element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CLASS_NAME, "fs-3.label-color-3"))
    )
    max_pain = max_pain_element.text.strip()
    print("Max Pain:", max_pain)
finally:
    driver.quit()

2. 目标元素的CSS类已更新

网站可能调整了页面样式,原有的fs-3 label-color-3类已不再对应Max Pain元素。

解决办法:
手动定位最新元素选择器:

  • 打开目标网页,找到Max Pain数值后右键选择「检查」
  • 在开发者工具中查看该元素的标签、class或ID属性,替换到代码中。例如若元素有专属ID,可改用soup.find("span", id="xxx")(替换为实际ID)。

3. 服务器拦截了爬虫请求

requests的默认请求头会被网站识别为爬虫,导致返回内容不完整或缺失目标数据。

解决办法:
添加浏览器请求头模拟正常访问,示例代码:

import requests
from bs4 import BeautifulSoup

url = "https://www.niftytrader.in/stock-options-chart/sbin"

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
}

response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.content, "html.parser")

# 可先打印页面内容验证是否包含目标数据
# print(soup.prettify())

max_pain_element = soup.find("span", class_="fs-3 label-color-3")

if max_pain_element:
    max_pain = max_pain_element.text.strip()
    print("Max Pain:", max_pain)
else:
    print("Max Pain value not found on the webpage.")

优先尝试添加请求头,若仍无效则大概率是动态加载导致的,再改用Selenium方案。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 04:44:55