1. 首页
  2. 股票学习

如何编写代码股票行情信息(编写一个获得股票信息的程序)

各位老总,有时我们想钱想疯了(没办法,上有老,下有小),就去玩股票,虽然大多数当菲菜,让人割了,但还是乐此不疲。

上APP、上软件看各股资料太麻烦?不好找出各股的对比数据?那你可以把各股资料放入数据库,像平常我们玩数据库一样,想查哪个市值多少,哪个地方的,非常方便。

下面程序是我之前写的读取各股票信息,然后存到数据库里,供自己分析,大家可以参考,编写更详细的信息。

如何编写代码股票行情信息

主要是读取东方财富网的数据

上证各股资料的URL都是:http://quote.eastmoney.com/sh+股票编号.html

深上证各股资料的URL都是:http://quote.eastmoney.com/sz+股票编号.html

代码如下(几年前的JAVA代码,能运行就得了)

package yjz.nms.cla;

import java.io.BufferedReader;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.UnsupportedEncodingException;

import java.net.ConnectException;

import java.net.MalformedURLException;

import java.net.URL;

import java.net.URLConnection;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class GetStockInfo {

public void getData() throws IOException {

//股票名

String stockname=null ;

//板块

String bankuai=null;

//业务范围

String yewufanwei=null ;

//概念

String gainian=null ;

//发行价

float faxingjia;

//注册资本

float zhuceziben = 0 ;

//市值

float shizhi ;

//市盈率

float shiyinglv = 0 ;

//每股收益

float meigushouyi = 0 ;

//业务收入

float yingyeshouru = 0 ;

//收入同比

float shourutongbi ;

//利润

float liren = 0 ;

//利润同比

float lirentongbi ;

//市净率

float shijinglv ;

Connection con = null;

// 连接数据库

con = connDB(con);

String codeSqe=null;

codeSqe=getCodeSeq(con );

String fileNameN = “e:\\allStockCode.ini”;

File f = new File(fileNameN);

String data = null;

if (f.exists()) {

BufferedReader br = new BufferedReader(new InputStreamReader(

new FileInputStream(fileNameN), “UTF-8”));

while((data=br.readLine())!=null && ! data.equals(“”)){

data=data.substring(data.indexOf(“(“)+1,data.indexOf(“)”));

String urls = null;

if (data.startsWith(“60”)) {

urls = “http://quote.eastmoney.com/sh”+data+”.html”;

} else {

urls = “http://quote.eastmoney.com/sz”+data+”.html”;

}

String htmlContent= getHtmlContent(urls,”gb2312″);

stockname = getContent(htmlContent,”

(.*?)

“);

shizhi = Float.parseFloat(getContent(htmlContent,”(.*?)亿”));

String tmp=getContent(htmlContent,”(.*?)”);

if(tmp.indexOf(“-“)<0){

shiyinglv = Float.parseFloat(tmp);

}

tmp=getContent(htmlContent,”收益.*(\\d+\\.\\d+?)”);

if(tmp.indexOf(“-“)<0){

meigushouyi = Float.parseFloat(tmp);

}

String yingyeshourus = getContent(htmlContent,”收入:(.*?)”);

if(yingyeshourus.indexOf(“亿”)>0){

yingyeshouru=Float.parseFloat(yingyeshourus.substring(0,yingyeshourus.indexOf(“亿”)))*10000;

}else{

yingyeshouru=Float.parseFloat(yingyeshourus.substring(0,yingyeshourus.indexOf(“万”)));

}

shourutongbi = Float.parseFloat(getContent(htmlContent,”同比:(.*?)%”));

String lirens = getContent(htmlContent,”净利润:(.*?)”);

if(lirens.indexOf(“亿”)>0){

liren=Float.parseFloat(lirens.substring(0,lirens.indexOf(“亿”)))*10000;

}else{

tmp=lirens.substring(0,lirens.indexOf(“万”));

liren=Float.parseFloat(tmp);

}

lirentongbi = Float.parseFloat(getContent(htmlContent,”同比:(.*?)%”));

shijinglv = Float.parseFloat(getContent(htmlContent,”市净率:(.*?)”));

if (data.startsWith(“60”)) {

urls = “http://f10.eastmoney.com/f10_v2/CompanySurvey.aspx?code=sh”+data;

} else {

urls = “http://f10.eastmoney.com/f10_v2/CompanySurvey.aspx?code=sz”+data;

}

htmlContent= getHtmlContent(urls,”utf-8″);

yewufanwei = getContent(htmlContent,”经营范围(.*?)”);

bankuai = getContent(htmlContent,”所属行业(.*?)”);

String zhucezibens = getContent(htmlContent,”注册资本\\(元\\)(.*?)”);

if(zhucezibens.indexOf(“亿”)>0){

zhuceziben=Float.parseFloat(zhucezibens.substring(0,zhucezibens.indexOf(“亿”)))*10000;

}else{

zhuceziben=Float.parseFloat(zhucezibens.substring(0,zhucezibens.indexOf(“万”)));

}

System.out.println(getContent(htmlContent,”每股发行价\\(元\\)(.*?)”));

faxingjia= Float.parseFloat(getContent(htmlContent,”每股发行价\\(元\\)(.*?)”));

if (data.startsWith(“60”)) {

urls = “http://f10.eastmoney.com/f10_v2/CoreConception.aspx?code=sh”+data;

} else {

urls = “http://f10.eastmoney.com/f10_v2/CoreConception.aspx?code=sz”+data;

}

htmlContent= getHtmlContent(urls,”utf-8″);

gainian= getContent(htmlContent,”

要点一:所属板块 (.*?)

“);

/*System.out.println(“data:”+data);

System.out.println(“stockname:”+stockname);

System.out.println(“bankuai:”+bankuai);

System.out.println(“yewufanwei:”+yewufanwei);

System.out.println(“gainian:”+gainian);;

System.out.println(“faxingjia:”+faxingjia);

System.out.println(“zhuceziben:”+zhuceziben);

System.out.println(“shizhi:”+shizhi);

System.out.println(“shiyinglv:”+shiyinglv );

System.out.println(“meigushouyi:”+meigushouyi );

System.out.println(“yingyeshouru:”+yingyeshouru);

System.out.println(“shourutongbi:”+shourutongbi);

System.out.println(“liren:”+liren );

System.out.println(“lirentongbi:”+lirentongbi);

System.out.println(“shijinglv:”+shijinglv);*/

if((codeSqe==null) || (!codeSqe.contains(data))){

try {

String insertsql = “insert into stockINFO(stockcode , stockname, bankuai, yewufanwei,gainian ,faxingjia ,zhuceziben ,shizhi,shiyinglv ,meigushouyi,yingyeshouru ,shourutongbi,liren,lirentongbi,shijinglv)” +

” values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)”;

PreparedStatement pstmt = con.prepareStatement(insertsql);

pstmt.setString(1, data);

pstmt.setString(2, stockname);

pstmt.setString(3, bankuai);

pstmt.setString(4, yewufanwei);

pstmt.setString(5, gainian);

pstmt.setFloat(6, faxingjia);

pstmt.setFloat(7, zhuceziben);

pstmt.setFloat(8, shizhi);

pstmt.setFloat(9,shiyinglv);

pstmt.setFloat(10,meigushouyi );

pstmt.setFloat(11,yingyeshouru);

pstmt.setFloat(12,shourutongbi );

pstmt.setFloat(13,liren);

pstmt.setFloat(14,lirentongbi );

pstmt.setFloat(15,shijinglv );

int result = pstmt.executeUpdate();

if(result==1){

System.out.print(“insert “+data+” into database ok”);

}

pstmt.close();

} catch (SQLException e) {

System.out.println(“SQL error”+data);

e.printStackTrace();

}catch (NumberFormatException e){

System.out.println(“数安格式错”+data);

e.printStackTrace();

}

catch (StringIndexOutOfBoundsException e){

System.out.println(“索引超出值”+data);

e.printStackTrace();

}

}else{

try {

String updatesql = “update stockINFO set stockname=?, bankuai=?, yewufanwei=?,gainian=? ,faxingjia=? ,zhuceziben=? ,shizhi=?,shiyinglv=? ,meigushouyi=?,yingyeshouru=? ,shourutongbi=?,liren=?,lirentongbi=?,shijinglv=? where stockcode=?” ;

PreparedStatement pstmt = con.prepareStatement(updatesql);

pstmt.setString(1, stockname);

pstmt.setString(2, bankuai);

pstmt.setString(3, yewufanwei);

pstmt.setString(4, gainian);

pstmt.setFloat(5, faxingjia);

pstmt.setFloat(6, zhuceziben);

pstmt.setFloat(7, shizhi);

pstmt.setFloat(8,shiyinglv);

pstmt.setFloat(9,meigushouyi );

pstmt.setFloat(10,yingyeshouru);

pstmt.setFloat(11,shourutongbi );

pstmt.setFloat(12,liren);

pstmt.setFloat(13,lirentongbi );

pstmt.setFloat(14,shijinglv );

pstmt.setString(15, data);

int result = pstmt.executeUpdate();

if(result==1){

System.out.print(“update “+data+” into database ok”);

}

pstmt.close();

} catch (SQLException e) {

System.out.println(“SQL error”+data);

e.printStackTrace();

}catch (NumberFormatException e){

System.out.println(“数安格式错”+data);

e.printStackTrace();

}

catch (StringIndexOutOfBoundsException e){

System.out.println(“索引超出值”+data);

e.printStackTrace();

}

}

}

br.close();

br=null;

} else {

System.out.println(“请在/slview/yjz,里面加上股票代码,用逗号分隔”);

}

try {

con.close();

con=null;

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

private Connection connDB(Connection con) {

try {

Class.forName(“oracle.jdbc.driver.OracleDriver”);

} catch (Exception e) {

System.out.println(“Can’t load dbdriver!–>”

+ e.getMessage());

}

try {

con = DriverManager.getConnection(

“jdbc:oracle:thin:@127.0.0.1:1639:dbnms”,

“abc”, “dddd”);

} catch (SQLException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}

return con;

}

public String getCodeSeq(Connection con ){

PreparedStatement pstmt=null;

ResultSet rs=null;

StringBuffer bs=new StringBuffer();

String sql = “select distinct stockcode from stockINFO” ;

try {

pstmt = con.prepareStatement(sql);

rs=pstmt.executeQuery();

while(rs.next()){

bs.append(rs.getString(1)+”,”);

}

}catch (SQLException e) {

e.printStackTrace();

}

try {

rs.close();

rs=null;

pstmt.close();

pstmt=null;

} catch (SQLException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}

return bs.toString();

}

public String getHtmlContent(String htmlURL,String code) {

URL url = null;

String rowContent = “”;

StringBuffer htmlContent = new StringBuffer();

try {

url = new URL(htmlURL);

BufferedReader in = new BufferedReader(new InputStreamReader(url

.openStream(), code));

while ((rowContent = in.readLine()) != null) {

htmlContent.append(rowContent);

}

in.close();

} catch (MalformedURLException e) {

e.printStackTrace();

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

return htmlContent.toString();

}

public String getContent(String htmlContent,String regex){

StringBuffer mainContent = new StringBuffer();

Pattern pattern = Pattern.compile(regex);

Matcher matcher = pattern.matcher(htmlContent);

if(matcher.find()) {

mainContent.append(matcher.group(1));

}

return mainContent.toString();

}

public static void main(String args[]) throws IOException,

InterruptedException {

GetStockInfo gsi=new GetStockInfo();

gsi.getData();

}

}

这个是只给大家一个参考,建议家里没有矿,还是少玩点。

如何编写代码股票行情信息如何编写代码股票行情信息

原创文章,作者:吾爱财经,如若转载,请注明出处:https://www.190521.com/481.html