程序员文章、书籍推荐和程序员创业信息与资源分享平台

网站首页 > 技术文章 正文

使用Python获取某网站基金实时估值

hfteth 2025-03-13 15:47:45 技术文章 12 ℃

获取某基金网站估值原始数据

postman天天基金网接口模拟

python代码实现

import requests

url = "http://fundgz.1234567.com.cn/js/006030.js?rt=1612781131"

payload = {}
headers = {}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)

其中006030基金代码


2.使用python解析返回值,将jsonp格式数据转化为json数据

_jsonp_begin = r'jsonpgz('_jsonp_end = r');'def from_jsonp(jsonp_str):
    jsonp_str = jsonp_str.strip()
    if not jsonp_str.startswith(_jsonp_begin) or \
            not jsonp_str.endswith(_jsonp_end):
        raise ValueError('Invalid JSONP')
    return json.loads(jsonp_str[len(_jsonp_begin):-len(_jsonp_end)])

这里使用正则匹配返回值jsonp数据,使用json.loads方法转字典


3.以json的形式输出返回值

def get_single_data(f_code):
    millis = int(round(time.time() * 1000))
    try:
        base_url = "http://fundgz.1234567.com.cn/js/{0}.js?rt={1}".format(f_code, millis)
        response = requests.get(base_url)
        resp = from_jsonp(response.text)
        return True, resp
    except Exception as e:
        print(base_url, response.text, str(e))
        return False, None


返回字段含义解析

字段名

中文含义

示例

fundcode

基金唯一编码

006030

name

基金名字

南方昌元转债A

jzrq

净值日期,即dwjz对应的日期

2023-08-03

dwjz

单位净值,即前一交易日净值

1.5395

gsz

估算值,即实时估值

1.5476

gszzl

估算增长率

0.53

gztime

估值时间

2023-08-04 15:00

注意事项:

QDII无法获取估算净值数据


完整代码:

import json
import time

import requests

_jsonp_begin = r'jsonpgz('_jsonp_end = r');'def from_jsonp(jsonp_str):
    jsonp_str = jsonp_str.strip()
    if not jsonp_str.startswith(_jsonp_begin) or \
            not jsonp_str.endswith(_jsonp_end):
        raise ValueError('Invalid JSONP')
    return json.loads(jsonp_str[len(_jsonp_begin):-len(_jsonp_end)])


# 爬虫获取实时数据def get_single_data(f_code):
    millis = int(round(time.time() * 1000))
    try:
        base_url = "http://fundgz.1234567.com.cn/js/{0}.js?rt={1}".format(f_code, millis)
        response = requests.get(base_url)
        resp = from_jsonp(response.text)
        return True, resp
    except Exception as e:
        print(base_url, response.text, str(e))
        return False, Noneif __name__ == '__main__':
    status, fund_json_data = get_single_data("006030")
    if not status:
        exit(1)
    print(fund_json_data)

输出结果:

{

'fundcode': '006030',

'name': '南方昌元转债A',

'jzrq': '2023-08-03',

'dwjz': '1.5395',

'gsz': '1.5476',

'gszzl': '0.53',

'gztime': '2023-08-04 15:00'

}


应用场景:

  1. 获取实时估算收益;
  2. 做量化交易;


最近发表
标签列表