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中的函数重载是什么?

    函数重载(Overloading)指的是在同一个类中定义的多个函数具有相同名称但参数列表不同的情况。同名函数的不同实现方法称为函数重载。Java方法重载时,首先形参类型必须不同,其次形参个数也必须不同,还需要注意当形参类型或个数相同时必须有不同的形参顺序。 Java中的函数重载有以下几个特点: 函数名称相同,但函数参数不同。 函数的返回类型可以相同也可以不同…

    Java 2023年4月27日
    00
  • java实现停车场系统

    Java实现停车场系统攻略 系统设计 初步确定系统需求 停车场系统需要实现两个功能,分别是车辆进入停车场和车辆离开停车场,并实现计费功能。 分析系统设计需求 系统设计需要涉及的类有停车场类 ParkingLot、车类 Car、计时器类 Timer、收费类 Fees,以及一个 main 函数。 其中停车场类需要实现车辆进入停车场、车辆离开停车场、查询剩余车位数…

    Java 2023年5月23日
    00
  • Java实现的对称加密算法AES定义与用法详解

    Java实现的对称加密算法AES定义与用法详解 什么是对称加密算法的AES 对称加密算法是一种能将数据加密成乱码,只有拥有密钥的人才能解密的算法。其中AES就是对称加密算法中的一种。 AES的全称是高级加密标准(Advanced Encryption Standard),是一种经过多方评审的加密算法,是一种区块加密标准算法,具有高度的安全性和实用性。该算法用…

    Java 2023年5月19日
    00
  • 一个牛人给Java初学者的建议(必看篇)

    一个牛人给Java初学者的建议(必看篇)攻略详解 建议1:学好基础知识 Java是一门面向对象的编程语言,因此学好面向对象编程的思想是Java入门的基础。学习面向对象编程,要掌握类、对象、继承、封装、多态等基本概念。 同时,Java还有很多重要的基础知识,比如数据类型、控制语句、循环结构、数组、接口、异常处理等,这些知识点也需要熟练掌握。初学者可以通过阅读教…

    Java 2023年5月20日
    00
  • EL表达式截取字符串的函数说明

    下面是关于EL表达式截取字符串的函数说明的完整攻略: EL表达式截取字符串的函数说明 在EL表达式中,有两个函数可以用来截取字符串:fn:substring()和fn:substringAfter()。下面我们来详细讲解一下这两个函数的用法和示例。 fn:substring() fn:substring()函数可以用来截取字符串中的一段子串,它的语法如下: …

    Java 2023年6月15日
    00
  • 详解SpringBoot是如何整合JPA的

    接下来我会详细讲解SpringBoot是如何整合JPA的,包括JPA的配置、实体类的设计、数据访问层的编写、并给出至少两个实例。 配置JPA 在SpringBoot中整合JPA,需要进行以下配置: 引入依赖 在 pom.xml 文件中引入以下依赖: <!– Spring Data JPA –> <dependency> <g…

    Java 2023年5月19日
    00
  • Spring MVC处理方法返回值过程解析

    下面我来详细讲解一下“Spring MVC处理方法返回值过程解析”的完整攻略。 什么是Spring MVC处理方法返回值过程? Spring MVC是基于MVC结构的开发框架,其中的控制器(Controller)负责处理用户请求并返回响应结果。在Spring MVC的控制器中,方法的返回值封装成一个ModelAndView对象,其中包含了视图名、数据模型和状…

    Java 2023年5月16日
    00
  • java多线程volatile内存语义解析

    Java多线程Volatile内存语义解析 什么是Volatile 在Java多线程中,Volatile是一种关键字,用来修饰变量,用于实现多线程之间的可见性和有序性。 当一个变量被声明为Volatile时,Java虚拟机保证每个线程修改了这个变量后,其他线程能够立即看到修改的结果,即保证了可见性。此外,Volatile还会影响指令和执行顺序,保证了有序性。…

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