Java实时获取基金收益项目源码分享

Java实时获取基金收益项目源码分享

本文介绍使用Java编写程序实时获取基金收益的方法。用户可以输入基金代码,程序会自动访问天天基金网站获取最新的基金收益数据,并实时展示在命令行窗口中。如果用户需要保存数据,程序还提供了将数据保存为CSV文件的功能。

准备工作

在开始编写Java程序之前,需要安装Java开发环境(JDK)以及Maven构建工具。

下载依赖

本项目使用HTML解析库Jsoup处理网页,使用纯Java库OpenCSV处理CSV文件。在pom.xml文件中添加以下依赖:

<dependency>
  <groupId>org.jsoup</groupId>
  <artifactId>jsoup</artifactId>
  <version>1.13.1</version>
</dependency>
<dependency>
  <groupId>com.opencsv</groupId>
  <artifactId>opencsv</artifactId>
  <version>5.5.1</version>
</dependency>

获取基金收益数据

在程序中使用Jsoup对天天基金网站进行解析,获取基金收益数据。使用以下代码获取基金收益:

String fundCode = "161725";  // 基金代码
String url = "http://fundgz.1234567.com.cn/js/" + fundCode + ".js?rt=" + System.currentTimeMillis();
Document doc = Jsoup.connect(url).get();
String jsonStr = doc.body().text();

处理基金收益数据

获取到的基金收益数据是一个带有json格式的字符串,需要使用Json库进行解析。以下代码获取基金净值、涨跌幅等数据:

JsonObject jsonObject = (JsonObject) JsonParser.parseString(jsonStr.replace("jsonpgz(", "").replace(");", ""));
String name = jsonObject.get("name").getAsString();  // 基金名称
String jzrq = jsonObject.get("jzrq").getAsString();  // 净值日期
String dwjz = jsonObject.get("dwjz").getAsString();  // 单位净值
String gszl = jsonObject.get("gszzl").getAsString();  // 估算涨跌幅

展示数据

使用System.out.println()将基金收益数据展示在命令行窗口中,方便用户查看。以下代码展示基金收益数据:

System.out.println("基金名称:" + name);
System.out.println("净值日期:" + jzrq);
System.out.println("单位净值:" + dwjz);
System.out.println("涨跌幅度:" + gszl + "%");

保存数据

如果用户需要将基金收益数据保存为CSV文件,可以使用OpenCSV库进行操作。以下代码将基金收益数据保存为CSV文件:

FileWriter writer = new FileWriter("fund.csv");
CSVWriter csvWriter = new CSVWriter(writer);
csvWriter.writeNext(new String[] {"基金名称", "净值日期", "单位净值", "涨跌幅度"});
csvWriter.writeNext(new String[] {name, jzrq, dwjz, gszl});
csvWriter.close();

示例

下面是一个使用实例,用户输入基金代码后,程序获取基金收益数据并实时展示在命令行窗口中:

import com.opencsv.CSVWriter;
import com.google.gson.*;
import org.jsoup.*;
import org.jsoup.nodes.*;

import java.io.*;
import java.util.*;

public class FundMonitor {

    public static void main(String[] args) throws IOException {
        Scanner scanner = new Scanner(System.in);
        while (true) {
            System.out.print("请输入基金代码(6位数):");
            String fundCode = scanner.next();
            if ("exit".equals(fundCode)) {
                break;
            }
            String url = "http://fundgz.1234567.com.cn/js/" + fundCode + ".js?rt=" + System.currentTimeMillis();
            Document doc = Jsoup.connect(url).get();
            String jsonStr = doc.body().text();
            JsonObject jsonObject = (JsonObject) JsonParser.parseString(jsonStr.replace("jsonpgz(", "").replace(");", ""));
            String name = jsonObject.get("name").getAsString();
            String jzrq = jsonObject.get("jzrq").getAsString();
            String dwjz = jsonObject.get("dwjz").getAsString();
            String gszl = jsonObject.get("gszzl").getAsString();
            System.out.println("基金名称:" + name);
            System.out.println("净值日期:" + jzrq);
            System.out.println("单位净值:" + dwjz);
            System.out.println("涨跌幅度:" + gszl + "%");
            System.out.print("是否保存数据(Y/N):");
            String save = scanner.next();
            if ("Y".equals(save.toUpperCase())) {
                FileWriter writer = new FileWriter("fund.csv");
                CSVWriter csvWriter = new CSVWriter(writer);
                csvWriter.writeNext(new String[] {"基金名称", "净值日期", "单位净值", "涨跌幅度"});
                csvWriter.writeNext(new String[] {name, jzrq, dwjz, gszl});
                csvWriter.close();
                System.out.println("数据已保存!");
            }
        }
    }

}

总结

本文介绍了Java实时获取基金收益的方法,并提供了示例代码。用户可以根据需求进行修改,实现更多自定义功能。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java实时获取基金收益项目源码分享 - Python技术站

(0)
上一篇 2023年6月1日
下一篇 2023年6月1日

相关文章

  • Java C++实现相同MD5加密算法的方式

    要在Java和C++中实现相同的MD5加密算法,需要借助各自语言中现成的库或函数来实现。以下是详细过程: 1. Java中的MD5加密 Java中实现MD5加密可以使用标准库中的java.security.MessageDigest类。使用该类需要以下步骤: 步骤一:声明MessageDigest对象 MessageDigest md = MessageDi…

    Java 2023年5月19日
    00
  • 面试官:怎么做JDK8的垃圾收集器的调优(面试常问)

    下面是关于如何做 JDK8 的垃圾收集器调优的完整攻略: 前言 Java 作为一门高级语言,在垃圾回收上具有很大优势,JDK8 中垃圾收集器不仅越来越多,同时也变得越来越复杂。垃圾收集器调优无疑成为优化 Java 性能的关键),以下将详细介绍如何做JDK8的垃圾收集器调优。 收集器种类 JDK8 中常用的垃圾收集器有以下几种: Serial 收集器:适用于单…

    Java 2023年5月26日
    00
  • Java使用TCP实现在线聊天的示例代码

    Java使用TCP实现在线聊天的示例代码,步骤如下: 第一步:建立ServerSocket服务端 使用Java的ServerSocket类在服务端创建一个服务器,并设置监听端口号。 使用Socket类接受客户端连接请求,创建多线程,处理客户端请求。 示例代码如下: ServerSocket serverSocket = new ServerSocket(PO…

    Java 2023年5月23日
    00
  • Java函数式编程(四):在集合中查找元素

    Java函数式编程(四):在集合中查找元素 在Java中,集合是一种非常常用的数据结构。在我们处理集合时,有时候需要从中查找某个元素,这就需要用到一些查找函数。 在这篇文章中,我们将介绍如何使用函数式编程的方式在集合中查找元素。 集合查找函数 在Java 8中,集合提供了一个函数式接口Predicate,用于测试集合中的元素是否符合某个条件。它提供了一个名为…

    Java 2023年5月26日
    00
  • Spring Boot中使用Spring MVC的示例解析

    Spring Boot中使用Spring MVC的示例解析 在开始使用Spring MVC之前,我们需要先安装并配置好Spring Boot和Spring MVC。安装时我们可以使用Spring官方提供的脚手架工具spring initilizr,也可以直接在IDE中创建Spring Boot项目并选择其中包含Spring MVC的依赖。 安装完毕之后,我们…

    Java 2023年6月15日
    00
  • 什么是永久代?

    以下是关于 Java 永久代的详细讲解和使用攻略: 什么是永久代? Java 永久代(Permanent Generation)是一种用于存储加载类信息、常量、静态变量、即时编译编译后的代码数据的内存区域。永久代是线程共享的,其大小可以通过 -XX:MaxPermSize 参数进行设置。 永久代的使用攻略 使用 Java 永久代需要注意以下几点: 在程序开发…

    Java 2023年5月12日
    00
  • ajax从JSP传递对象数组到后台的方法

    下面我将详细讲解“ajax从JSP传递对象数组到后台的方法”的完整攻略。 一、前提准备 在进行ajax传递对象数组到后台的操作前,我们需要事先做好以下准备: 后台代码准备好接收对象数组并进行相应的处理; 编写好前端的页面代码,包括页面元素、事件绑定等; 引入jQuery库,方便进行ajax操作。 二、实现步骤 定义对象数组 首先,我们需要定义一个JavaSc…

    Java 2023年6月15日
    00
  • 纯jsp打造无限层次的树代码

    关于“纯jsp打造无限层次的树代码”的攻略,主要涉及到以下几个方面: 1.准备工作 在开始打造树代码之前,需要准备好数据。一般来说,树形结构的数据可以使用嵌套的Map、List或是递归对象等进行表示。同时,可以根据实际需求,对数据进行排序、分页等操作。 2.代码实现 在jsp页面中打造树代码,主要是通过使用标签库、JavaScript等技术实现的。我们可以通…

    Java 2023年6月15日
    00
合作推广
合作推广
分享本页
返回顶部