下文是讲述如何从通达信的输出文件中获得股票信息,如果想用Java爬虫从网页爬取信息请参考:https://www.cnblogs.com/xiandedanteng/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日--

从通达信导出文件获取A股所有股票代号名称(至2020年2月24日)的更多相关文章

  1. 用Java爬虫爬取凤凰财经提供的沪深A股所有股票代号名称

    要爬取的凤凰财经网址:http://app.finance.ifeng.com/list/stock.php?t=hs 本作主要采用的技术是jsoup,相关介绍网页:https://www.jians ...

  2. python+tushare获取A股所有股票代码和名称列表

    接口:stock_basic 描述:获取基础信息数据,包括股票代码.名称.上市日期.退市日期等 注:tushare模块下载和安装教程,请查阅我之前的文章 输入参数 名称      |      类型  ...

  3. java获取两个时间的相隔时间,包括年、月、日、时、分、秒

    public static final int YEAR_RETURN = 0;                    public static final int MONTH_RETURN = 1 ...

  4. 【12月06日】A股全市场情绪指标整理分析

    1. A股全市场的股权质押比例 2018年11月30日,A股全市场,质押股数占全市场总股本数比:9.997%,最近2周出现了3.2%的轻微回落.同历史时期相比,仍然处于高位. 2. A股全市场的解禁市 ...

  5. 【基础篇】DatePickerDialog日期控件的基本使用(二) ——分别获取年、月、日、时、分

    项目步骤: 1.在Main.xml布局文件中定义对应的组件,Main.xml内容如下: <?xml version="1.0" encoding="utf-8&qu ...

  6. [python]沪深龙虎榜数据导入通达信的自选板块,并标注于K线图上

    将沪深龙虎榜数据导入通达信的自选板块,并标注于K线图上 原理:python读取前一次处理完的计算5日后涨跌幅输出的csv文件 文件名前加"[paint]" 安照通达信的画图文件和板 ...

  7. 通达信5分钟.lc5和.lc1文件格式

    一.通达信日线*.day文件    文件名即股票代码    每32个字节为一天数据    每4个字节为一个字段,每个字段内低字节在前    00 ~ 03 字节:年月日, 整型    04 ~ 07 ...

  8. 通达信zig函数的python实现

    通达信zig函数的python实现 代码 # coding: utf-8 """ Created on Sat Jan 05 18:53:39 2019 http://w ...

  9. 通达信自动交易软件 z

    1.要善用spy++ 2.不同的控件主要靠GetDlgCtrlID去区分 3.要获得另一个进程的焦点窗口(GetFocus)需要调用AttachThreadInput 4.尽量少用keybd_even ...

随机推荐

  1. 【学习笔记】VS Code的launch.json 的 Python和Chrome常用配置(MacOS)

    遇到的问题: 1.无法直接用VS Code调用Chrome来打开HTML文件 2.VS Code调用Chrome成功后,Python解释器无法启动调试了 解决方法: 以下是我的 launch.json ...

  2. 大型Java进阶专题(十一) 深入理解JVM (下)

    前言 ​ 前面我们了解了JVM相关的理论知识,这章节主要从实战方面,去解读JVM. 类加载机制 ​ Java源代码经过编译器编译成字节码之后,最终都需要加载到虚拟机之后才能运行.虚拟机把描述类的数据从 ...

  3. ResNeSt:Split attention

    https://www.cnblogs.com/xiximayou/p/12728644.html 下面是SE和SK这两个网络,兄弟俩很相似 下面是具体的每个cardinal(翻译为枢纽)网络,和SK ...

  4. Java—包装类/System类/Math类/Arrays类/大数据运算/Collection接口/Iterator迭代器

    基本类型包装类 8种基本类型对应的包装类如: 将字符串转成基本类型: 将基本数值转成字符串有3种方式: 基本类型直接与””相连接即可:34+" " 调用String的valueOf ...

  5. MySQL连接查询、子查询与联合查询

    一 连接查询 1.交叉连接: 语法: from  表1  [cross]  join  表2  ; 例如: 表一: 表2: 交叉: 交叉查询并没有意义. 2.内连接: 语法: from  表1  [i ...

  6. LeetCode 931. 下降路径最小和 详解

    题目详情 给定一个方形整数数组 A,我们想要得到通过 A 的下降路径的最小和. 下降路径可以从第一行中的任何元素开始,并从每一行中选择一个元素.在下一行选择的元素和当前行所选元素最多相隔一列. 示例: ...

  7. 浏览器自动化的一些体会9 webBrowser控件之零碎问题3

    WebBrowser控件最大的优点是可以轻松嵌入win form程序中,但是微软好像对这个控件没什么兴趣,这么多年了还没有改进,结果造成一堆问题. 1. 不支持https 2. 缺省模拟ie 7,如果 ...

  8. python 03 常用操作符

    1. e记法,科学计数法. AeB   A,B为整数,A*10的B次方. 2. 逻辑运算,真为1,假为0,最好不使用这个计算 true(1)    false(0) true+true=2 3.类型转 ...

  9. python基础 Day6

    python Day6 id 可以获得python的内存地址 id的举例子 a=100 print(id(a)) #140712544153072 这里就是该对象的内存地址 is 判断的是比较内存地址 ...

  10. openstack vnc 报1006的错误

    1.问题现象 创建完虚拟机以后,通过nova get-vnc-console命令,获取虚机的vnc连接地址,在浏览器中打开该连接,报1006错误 2.vnc的原理图 3.定位分析 1)分别在控制节点和 ...