一、接口
基金實時信息:http://fundgz.1234567.com.cn/js/001186.js?rt=1463558676006
001186為基金代號
返回值:jsonpgz({"fundcode":"001186","name":"富國文體健康股票","jzrq":"2016-05-17","dwjz":"0.7420","gsz":"0.7251","gszzl":"-2.28","gztime":"2016-05-18 15:00"});
基金詳細信息:http://fund.eastmoney.com/pingzhongdata/001186.js?v=20160518155842
數據量太大不貼了
還有兩個
http://fund.eastmoney.com/js/fundcode_search.js
所有基金名稱列表代碼
http://fund.eastmoney.com/js/jjjz_gs.js?dt=1463791574015
所有基金公司名稱列表代碼
二、代碼示例
這里以python來演示,以501019為例子。
import requests import json import re code = "501019" # 基金代碼 url = "http://fundgz.1234567.com.cn/js/%s.js"%code # 瀏覽器頭 headers = {'content-type': 'application/json', 'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:22.0) Gecko/20100101 Firefox/22.0'} r = requests.get(url, headers=headers) # 返回信息 content = r.text # content = """jsonpgz({"fundcode":"501019","name":"國泰國證航天軍工指數","jzrq":"2020-08-13","dwjz":"1.2327","gsz":"1.2690","gszzl":"2.95","gztime":"2020-08-14 15:00"});""" # 正則表達式 pattern = r'^jsonpgz\((.*)\)' # 查找結果 search = re.findall(pattern, content) # 遍歷結果 for i in search: data = json.loads(i) # print(data,type(data)) print("基金: {},收益率: {}".format(data['name'],data['gsz']))
說明:
請求接口時,url只需要用基金代碼即可,不需要時間戳。
返回的數據格式不是標准的json數據,因此需要正則匹配出標准json數據。
得到標准json數據后,就可以取數據了。
注意:此接口是返回當天的數據,如果非工作日,返回前一天的數據。
執行代碼,輸出:
基金: 國泰國證航天軍工指數,收益率: 1.2690