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

无报错但无法获取网站股票JSON数据,请求技术协助

问题:无法获取Marketsmithindia网站红框内股票数据,代码无输出

我尝试获取Marketsmithindia网站截图红框内的股票数据,但编写的Python代码运行后无输出,希望能协助获取该红框中的数据。


相关信息

目标数据截图

目标数据红框截图

网站地址

https://marketsmithindia.com/mstool/eval/tvssrichak/evaluation.jsp#/

测试用JSON接口链接

https://msi-gcloud-prod.appspot.com/gateway/simple-api/ms-india/instr/0/3023210/symboldetails.json?s=20180719&e=20230719&text=TVSSRICHAK&lang=en&isConsolidated=0&ms-auth=3990+MarketSmithINDUID-Web0000000000+MarketSmithINDUID-Web0000000000+0+230325200706+-514613229

Stocklist.txt内容

TVSSRICHAK
INFY
SUZLON

编写的Python代码

# -*- coding: utf-8 -*-
"""
Created on Sat Dec 24 23:14:57 2022

@author: eruku
"""

import requests


infile = 'c:/Users/eruku/Documents/StocksList.txt'
outfile = 'c:/Users/eruku/Documents/Marketsmithindia.txt'


timeout = 10
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:73.0) '
    'Gecko/20100101 Firefox/73.0'
}
baseurl = 'https://msi-gcloud-prod.appspot.com/gateway/simple-api/ms-india/instr/0/3023210/symboldetails.json?s=20180719&e=20230719&text='
endurl = '&lang=en&isConsolidated=0&ms-auth=3990+MarketSmithINDUID-Web0000000000+MarketSmithINDUID-Web0000000000+0+230325200706+-514613229'
session = requests.Session()

response = session.get(baseurl, headers=headers, timeout=timeout)

with open(infile, 'r') as IN, open(outfile, 'w') as OUT:
    for stock in IN:
        stock = stock.strip()
        response = session.get(
            # f'{baseurl}api/quote-equity?symbol={stock}',
            f'{baseurl}{stock}{endurl}',
            headers=headers,
            timeout=timeout
        )
        response = response.json()

问题分析与修复方案

1. 代码无输出的核心原因

代码仅完成了接口请求和JSON解析,但未将解析后的数据写入输出文件或打印,所以运行后无输出。此外还存在两个潜在问题:

  • 提前发起了一次无效的baseurl请求(不带股票代码),可能触发接口限制
  • 未处理请求失败的异常情况(网络错误、接口返回非JSON数据等)

2. 修复后的代码

以下代码添加了数据写入、错误处理,并优化了请求逻辑:

# -*- coding: utf-8 -*-
import requests
import json

infile = 'c:/Users/eruku/Documents/StocksList.txt'
outfile = 'c:/Users/eruku/Documents/Marketsmithindia.txt'

timeout = 10
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:73.0) Gecko/20100101 Firefox/73.0'
}
baseurl = 'https://msi-gcloud-prod.appspot.com/gateway/simple-api/ms-india/instr/0/3023210/symboldetails.json'

session = requests.Session()

with open(infile, 'r') as IN, open(outfile, 'w', encoding='utf-8') as OUT:
    for stock in IN:
        stock = stock.strip()
        if not stock:
            continue
        
        # 用参数字典构建请求,避免URL拼接出错
        params = {
            's': '20180719',
            'e': '20230719',
            'text': stock,
            'lang': 'en',
            'isConsolidated': '0',
            'ms-auth': '3990+MarketSmithINDUID-Web0000000000+MarketSmithINDUID-Web0000000000+0+230325200706+-514613229'
        }
        
        try:
            response = session.get(baseurl, headers=headers, params=params, timeout=timeout)
            response.raise_for_status()  # 触发HTTP错误异常
            data = response.json()
            
            # 提取红框内目标数据(需根据接口实际返回的JSON结构调整字段)
            # 示例:假设红框包含营收增长率、净利润率等指标,替换为实际字段名
            target_data = {
                '股票代码': stock,
                '营收增长率(3年)': data.get('threeYearSalesGrowth', '无数据'),
                '净利润率': data.get('netProfitMargin', '无数据'),
                'ROE': data.get('roe', '无数据')
            }
            
            # 将数据写入文件,每行一个格式化JSON对象
            OUT.write(json.dumps(target_data, ensure_ascii=False) + '\n')
            print(f"已获取并写入{stock}的数据")
            
        except requests.exceptions.RequestException as e:
            error_msg = f"{stock}请求失败: {str(e)}"
            OUT.write(error_msg + '\n')
            print(error_msg)
        except ValueError:
            error_msg = f"{stock}返回非JSON格式数据"
            OUT.write(error_msg + '\n')
            print(error_msg)

3. 关键注意事项

  • ms-auth参数有效性:该参数是网站身份验证凭证,可能过期或与浏览器会话绑定。如果请求返回401/403错误,需登录Marketsmithindia后,从浏览器开发者工具的网络请求中复制最新的ms-auth参数替换代码中的对应值。
  • 目标字段匹配:需要先打印data查看接口返回的完整JSON结构,再调整target_data中的字段,精准匹配截图红框内的具体指标。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 07:26:04