python解析通达信股票池XML文档

当我们通过“策略股票池”功能选出股票时,软件会在安装目录下生成一个XML文件,它在\T0002\tpool文件夹里,可以解析出我们需要的数据,比如“股票代码”“进入时间”“进入价格”……等。

XML(eXtensible Markup Language)指可扩展标记语言,被设计用来传输和存储数据,已经日趋成为当前许多新生技术的核心,在不同的领域都有着不同的应用。它是web发展到一定阶段的必然产物,既具有SGML的核心特征,又有着HTML的简单特性,还具有明确和结构良好等许多新的特性。

python解析通达信股票池XML文档

python解析通达信股票池XML文档

策略股票池XML文档结构

python解析XML常见的有三种方法:一是xml.dom.*模块,它是W3C DOM API的实现,若需要处理DOM API则该模块很适合;二是xml.sax.*模块,它是SAX API的实现,这个模块牺牲了便捷性来换取速度和内存占用,SAX是一个基于事件的API,这就意味着它可以“在空中”处理庞大数量的的文档,不用完全加载进内存;三是xml.etree.ElementTree模块(简称 ET),它提供了轻量级的Python式的API,相对于DOM来说ET 快了很多。

并且由于本次解析XML文档的编码问题(GB2312),目前只能使用xml.etree.ElementTree模块。

# -*- coding: UTF-8 -*-
from datetime import datetime
from xml.etree.ElementTree import parse, XMLParser, ElementTree

tree: ElementTree = parse(r'D:\zd_huatai\T0002\tpool\股票池.xml', parser=XMLParser(encoding='iso-8859-5'))
root = tree.getroot()
gpc = []
for stk in root.findall(".//cells/cell[@id='25']/stk"):
    code = stk.get('code')
    inprice = stk.get('inprice')
    indate = stk.get('indate')
    intime = stk.get('intime')
    join_time = indate + intime
    join_time = str(datetime.strptime(join_time, "%Y%m%d%H%M%S"))
    gpc1 = ["代码", code, "价格", inprice, "时间", join_time]
    print(gpc1)
    gpc.append(gpc1)
print(len(gpc))

输出结果:

D:\pythonProject\venv\Scripts\python.exe D:/pythonProject/r1_xml.py
['代码', '600778', '价格', '5.33', '时间', '2022-04-12 09:31:50']
['代码', '002492', '价格', '6.46', '时间', '2022-04-12 09:37:43']
['代码', '002033', '价格', '7.28', '时间', '2022-04-12 09:40:45']
['代码', '002660', '价格', '8.55', '时间', '2022-04-12 10:00:35']
['代码', '600278', '价格', '8.30', '时间', '2022-04-12 14:57:18']
['代码', '002228', '价格', '3.79', '时间', '2022-04-12 15:08:51']
6

发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/289745
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!

(0)
股市刺客的头像股市刺客
上一篇 58分钟前
下一篇 56分钟前

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注