`
flylynne
  • 浏览: 373773 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

sina获取股票代码java

 
阅读更多

从sina获取所有股票代码 http://vip.stock.finance.sina.com.cn/q/go.php/vIR_CustomSearch/index.phtml?p=77&sr_p=-1

public class SinaStock {
 public static String db = "D:\\workspace\\stock\\data\\sina-stock-codes-2.csv";

 public static final int COLUMNS = 33;
 public static List<String> codes = new ArrayList<String>();

 static {
  File in = new File(db);
  if (!in.exists()) {
   // 从网络获取
   if (codes.size() < 1)
    try {
     codes = getAllStackCodes();
    } catch (IOException e) {
     e.printStackTrace();
    }
  } else {
   // 从本地获取
   if (codes.size() < 1)
    try {
     codes = getAllStockCodesFromLocal();
    } catch (IOException e) {
     e.printStackTrace();
    }
  }
 }

 // 解析一组股票代码字符串 把code中包括的所有股票代码放入List中
 public static List<String> handleStockCode(String code) {
  List<String> codes = null;
  int end = code.indexOf(";");
  code = code.substring(0, end);
  int start = code.lastIndexOf("=");
  code = code.substring(start);
  code = code.substring(code.indexOf("\"") + 1, code.lastIndexOf("\""));
  codes = Arrays.asList(code.split(","));
  return codes;
 }

 // 返回的值是一个js代码段 包括指定url页面包含的所有股票代码
 public static String getBatchStackCodes(URL url) throws IOException {
  URLConnection connection = url.openConnection();
  connection.setConnectTimeout(30000);
  BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));
  String line = null;
  StringBuffer sb = new StringBuffer();
  boolean flag = false;
  while ((line = br.readLine()) != null) {
   if (line.contains("<script type=\"text/javascript\">") || flag) {
    sb.append(line);
    flag = true;
   }
   if (line.contains("</script>")) {
    flag = false;
    if (sb.length() > 0) {
     if (sb.toString().contains("code_list") && sb.toString().contains("element_list")) {
      break;
     } else {
      sb.setLength(0);
     }
    }
   }
  }
  if (br != null) {
   br.close();
   br = null;
  }
  return sb.toString();
 }

 // 获取新浪78也的所有股票代码
 public static List<String> getAllStackCodes() throws IOException {
  System.out.println("Start getAllStackCodes...");
  List<String> codes = new ArrayList<String>();
  int i = 1;
  URL url = null;
  // 新浪 股票 好像目前为止就 77页
  for (; i < 78; i++) {
   url = new URL("http://vip.stock.finance.sina.com.cn/q/go.php/vIR_CustomSearch/index.phtml?p=" + i +"&sr_p=-1");
   String code = getBatchStackCodes(url);
   System.out.println("code=" + i);
   codes.addAll(handleStockCode(code));
  }
  saveStockCodes(codes, db);
  return codes;
 }

 // 把新浪77页的所有股票代码存入本地文件
 public static void saveStockCodes(List<String> codes, String fileName) throws IOException {
  // 将所有股票代码存入文件中
  // System.out.println("Start saveStockCodes...");
  File out = new File(fileName);
  if (!out.exists())
   out.createNewFile();
  BufferedWriter bw = new BufferedWriter(new FileWriter(out,true));
  for (String code : codes) {
   bw.write(code);
   bw.newLine();
  }
  if (bw != null) {
   bw.close();
   bw = null;
  }
 }

 public static List<String> getAllStockCodesFromLocal() throws IOException {
  List<String> codes = new ArrayList<String>();
  File in = new File(db);
  if (!in.exists())
   throw new IOException("指定数据文件不存在!");
  BufferedReader br = new BufferedReader(new FileReader(in));
  String line = null;
  while ((line = br.readLine()) != null) {
   codes.add(line);
  }
  // 删除最后一个空行
  codes.remove(codes.size() - 1);
  if (br != null) {
   br.close();
   br = null;
  }
  return codes;
 }

}

分享到:
评论

相关推荐

    java获取新浪股票信息

    本文将深入探讨如何使用Java语言从新浪获取股票信息,包括理解数据格式、解析数据以及利用这些信息进行进一步的处理或展示。 ### 一、理解新浪股票API 新浪财经提供了免费的股票数据接口,可以用来获取股票的实时...

    股票代码查询股票代码查询

    - Java:可以利用JQuantlib、Quandl Java API等工具进行股票代码查询和行情获取。 - JavaScript:使用Alpha Vantage或IEX Cloud的API可实现股票代码查询。 6. 数据分析与投资决策: - 通过查询股票代码,投资者...

    股票价格查询 java swing 小程序

    【标题】"股票价格查询 java swing 小程序"是一个基于Java Swing开发的桌面应用程序,它实现了用户通过输入股票代码查询股票价格的功能。该程序利用了新浪提供的股票接口,能够获取实时或历史的股票数据,并在用户...

    java股票实时查询小软件

    【Java股票实时查询小软件】是一款利用JavaFX技术构建用户界面,通过访问新浪博客的URL获取股票实时数据的简易应用。这款软件的核心功能是展示股票信息,并允许用户点击每条股票数据来查看对应的股价走势。下面我们...

    Android项目源码基于新浪股票数据源的股市行情小软件.rar

    再者,标签中的“新浪”提示我们,该项目获取股票数据是通过新浪的API。新浪作为知名的财经信息提供者,提供了公开的股票数据接口供开发者使用。通过这些接口,应用可以实时获取到最新的股票数据,如开盘价、收盘价...

    Java从网络获取股票实时数据,2种方法webservice和javascript.docx

    新浪提供了免费的股票数据接口,用于获取股票的实时行情。下面以大秦铁路(股票代码:601006)为例介绍具体的使用方法: - **访问地址**:`http://hq.sinajs.cn/list=sh601006` - **返回结果示例**: - "大秦铁路...

    股票数据实时获取

    - **参数**:根据接口要求传递的股票代码、时间范围等信息。 - **请求方法**:常见的有GET和POST,GET常用于获取数据,POST可能用于提交数据。 - **返回格式**:接口返回的数据格式,可能是JSON、XML或CSV等。 在...

    基于新浪股票接口的Android股票查询系统

    用户可以输入股票代码或名称来查询特定股票的最新价格、涨跌幅、交易量等关键数据。 2. **使用方法**:用户启动应用后,可以看到简洁的主界面,这里显示了热门股票的概览。通过搜索功能,用户可以查找并查看具体...

    新浪股票数据借口

    以上代码会返回浦发银行(股票代码:sh600000)的最新行情数据。 请注意,调用API时需遵守新浪的相关规定,避免频繁请求或超出使用限制,否则可能导致账号被封禁。此外,数据的安全性也很重要,不要泄露API密钥,并...

    新浪股票Demo源码

    在Demo源码中,开发者通常会设置函数或类来调用这些接口,例如获取股票代码、股票名称、开盘价、收盘价、最高价、最低价以及成交量等关键数据。这些数据对于股票投资者进行数据分析和决策至关重要。 源码的核心部分...

    实时股票查询系统

    SH系列股票通常指的是股票代码以60开头的A股股票,这些股票代表了中国的主板市场。通过实时查询功能,用户可以随时获取最新的股票价格、涨跌幅、成交量等关键信息,帮助投资者做出决策。 为了实现股票数据的实时...

    Android项目源码基于新浪股票数据源的股市行情小软件

    在这个项目中,开发者需要向新浪服务器发送HTTP请求,请求中包含股票代码,然后服务器会返回相应的股票信息,如开盘价、收盘价、最高价、最低价以及成交量等。这些数据随后会在应用的界面上显示出来。 关于股票投资...

    istock:一个基于spring boot实现的java股票爬虫(仅支持A股),如果你请。 V2升级版正在开发中!

    新浪财经 雪球 上交所 深交所 东方财富 :exclamation_mark: :backhand_index_pointing_right:本项目初衷纯属技术交流,勿作商业用途 :exclamation_mark: ! 实现功能 :check_box_with_check:指数更新 :check_box_...

    新浪股票在线

    1. 数据获取:新浪股票数据的获取主要依赖于新浪提供的API接口。开发者需要熟悉这些接口的使用方法,包括请求格式、参数设置以及如何解析返回的JSON或XML数据。此外,可能还需要处理不同时间周期(如分钟、日、周)...

    股票涨跌幅限值提醒小工具

    8. **编程语言与技术**:虽然未直接提供,但开发此类应用通常会用到编程语言如Python、C#或Java,配合GUI库(如Qt、WinForms或WPF)创建用户界面,并可能使用第三方API来获取股票数据,如雅虎财经、新浪财经等提供的...

    实时股票数据接口大全.zip

    3. **数据字段**:不同的API可能会提供不同的数据字段,如股票代码、开盘价、收盘价、交易量、涨跌幅等。开发者需要根据需求选择合适的字段。 4. **频率限制**:为防止滥用,API通常会对请求频率进行限制。超过限制...

    股票接收通用程序样本

    2. **API接口**:许多金融数据提供商如雅虎财经、Google财经、新浪财经等都提供了API,开发者需要理解如何调用这些API来获取股票数据。 3. **数据解析**:股票数据通常以JSON、XML或CSV格式返回,理解这些数据格式...

    股票行情软件

    这可能涉及到SQLite这样的轻量级数据库,用于保存大量的股票数据,包括股票代码、开盘价、收盘价、最高价、最低价、成交量等关键指标。 其次,软件需要具备数据显示的功能。用户界面通常会展示K线图(阴阳烛图),...

    stock:股票监控、获取向上突破的股票

    stock记录股票 股票接口新浪股票接口 沪市是sh开头 深市是sz开头腾讯股票接口 (日K) 18代表年份 (周k)由于是内部接口调用,并未考虑SQL注入问题完成定时粗体斜体引用代码=删除线=*列表先这样吧到时候找个...

    条件选股编程教程(真正实现股票程序化交易).pdf

    7. 实时更新:如果需要进行实时交易,需要设置定时任务,定期执行条件选股代码,获取最新的股票列表。 8. 风险控制:条件选股仅仅是交易决策的一部分,还需要结合风险管理策略,如止损、止盈、资金管理等。 在实际...

Global site tag (gtag.js) - Google Analytics