从通达信导出文件获取A股所有股票代号名称(至2020年2月24日)
下文是讲述如何从通达信的输出文件中获得股票信息,如果想用Java爬虫从网页爬取信息请参考:https://www.cnblogs.com/heyang78/p/12808381.html
要做个股票信息系统,首先要创建张基本表,表中包括股票代号和现用名。
要取得所有股票代号名称有很多方法,我分辨后觉得最方便快捷的是:
打开新浪通达信,敲入60,然后在菜单中选“系统”,“数据导出”,再选报表中所有数据,点导出,数据文件就会出现到C:\new_tdx\T0002\export\沪深A股20200224.txt 中了。
有图有真相:
当然,这个文件不能直接用,还需要用下面程序处理一下:
package readstocks; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.text.MessageFormat; import java.util.Map; import java.util.TreeMap; import java.util.regex.Pattern; public class StockReader { public void readFrom(String filePathname) { Map<String, String> map = new TreeMap<String, String>(); try { BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(filePathname), "UTF-8")); String line = null; while ((line = br.readLine()) != null) { String[] arr = line.split("\\t+"); if (isStockCode(arr[0])) { map.put(arr[0], arr[1]); } } br.close(); } catch (FileNotFoundException ex) { ex.printStackTrace(); } catch (IOException ex) { ex.printStackTrace(); } PrintWriter out; try { out = new PrintWriter("C:\\Users\\ufo\\Desktop\\output.txt"); int index = 0; for (String code : map.keySet()) { index++; String name = map.get(code); String raw = " insert into stock(id,code,name) values (''{0}'',''{1}'',''{2}'');"; Object[] arr = { String.valueOf(index), code, name }; String sql = MessageFormat.format(raw, arr); out.println(sql); } out.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } } private boolean isStockCode(String str) { return Pattern.matches("\\d{6}", str); } public static void main(String[] args) { StockReader sr = new StockReader(); sr.readFrom("C:\\new_tdx\\T0002\\export\\沪深A股20200224.txt"); } }
处理完了后output.txt就是我们需要的数据插入语句了,下面节选了一部分:
insert into stock(id,code,name) values ('1','000001','平安银行');
insert into stock(id,code,name) values ('2','000002','万 科A');
insert into stock(id,code,name) values ('3','000004','国农科技');
insert into stock(id,code,name) values ('4','000005','世纪星源');
insert into stock(id,code,name) values ('5','000006','深振业A');
insert into stock(id,code,name) values ('6','000007','全新好');
insert into stock(id,code,name) values ('7','000008','神州高铁');
insert into stock(id,code,name) values ('8','000009','中国宝安');
insert into stock(id,code,name) values ('9','000010','*ST美丽');
insert into stock(id,code,name) values ('10','000011','深物业A');
...
然后按下面语句建表:
create table stock( id number(6,0) primary key not null, code nvarchar2(6) not null, name nvarchar2(10) not null )
插入完了以后,将上面大批insert一次性在sqlplus里执行完就行。下面是我执行的结果:
3791 688358 祥生医疗
3792 688363 华熙生物
3793 688366 昊海生科
3794 688368 晶丰明源
3795 688369 致远互联
ID CODE NAME
---------- ------------ --------------------
3796 688388 嘉元科技
3797 688389 普门科技
3798 688396 华润微
3799 688398 赛特新材
3800 688399 硕世生物
已选择3800行。
SQL> select count(*) from stock;
COUNT(*)
----------
3800
SQL> select * from stock where code='601857';
ID CODE NAME
---------- ------------ --------------------
3167 601857 中国石油
总共三千八百多支股票的stock表就建完了。
祝贺你看到这里,因为点击下面的链接你将直接得到三个文本的下载包:
https://files.cnblogs.com/files/xiandedanteng/stocks20200224.rar
--2020年2月24日--
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
2016-02-24 转载:XPath基本语法
2016-02-24 爪哇国新游记之三十四----Dom4j的XPath操作