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

yizhihongxing

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日

相关文章

  • Spring Data Jpa实现自定义repository转DTO

    针对这个话题,我提供以下完整攻略,包括两条示例说明。 Spring Data Jpa实现自定义repository转DTO 背景 在实际开发中,通常需要将领域模型(Entity)转换成数据传输对象(DTO)输出给客户端。如果每个DTO都手动转换一次,那么会导致大量的重复代码和工作量,因此我们需要一个高效的方式来完成这个任务。本文介绍如何通过Spring Da…

    Java 2023年6月3日
    00
  • Springboot与Maven多环境配置的解决方案

    下面我来详细讲解“Spring Boot与Maven多环境配置的解决方案”的完整攻略。 方案概述 在进行软件开发的过程中,不同的环境往往需要使用不同的配置,例如本地开发环境、测试环境、生产环境等。而Spring Boot作为一个快速开发的框架,在开发过程中需要使用到一些配置,例如数据库连接信息、端口号等。因此需要进行多环境配置的支持。 Maven是一个常用的…

    Java 2023年5月19日
    00
  • Ajax+Servlet+jsp显示搜索效果

    如果想要实现“Ajax+Servlet+jsp显示搜索效果”,我们需要完成以下步骤: 前端页面设计 首先,我们需要在前端设计一个搜索框和搜索结果展示区域。搜索框用于输入查询关键词,搜索结果展示区域用于显示查询到的结果。如下示例代码: <form> <input type="text" id="searchInp…

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

    什么是Java代理? Java代理是一种设计模式,它允许在不改变目标对象的情况下代理对象与目标对象交互。代理对象可以在执行目标对象之前或之后执行其他操作,在不影响目标对象的情况下维护目标对象的状态。Java中有两种类型的代理:静态代理和动态代理。 静态代理 静态代理是在自己的类中实现代理的一种方式。创建一个代理类,通过实现与目标对象相同的接口来实现代理。使用…

    Java 2023年5月11日
    00
  • Java日期操作方法工具类实例【包含日期比较大小,相加减,判断,验证,获取年份等】

    下面是详细讲解Java日期操作方法工具类实例的完整攻略。 一、概述 Java中日期操作是常见的需求,在很多场景中都需要对日期进行操作。Java日期操作方法工具类是为了方便Java开发者对日期进行操作而开发的一个工具类。该工具类提供了丰富的日期操作方法,包括比较大小、相加减、判断、验证、获取年份等。 二、使用方法 1. 引入工具类 首先,我们需要引入该工具类。…

    Java 2023年5月20日
    00
  • java 域对象共享数据的实现

    我将为你详细讲解“java 域对象共享数据的实现”的完整攻略。 什么是java域对象 Java域对象是Java程序中表示一个实体的对象。它通常是一个POJO(Plain Old Java Object),它没有任何业务逻辑代码,并只包含类属性和getter / setter方法来管理该实体的数据。 如何实现Java域对象的数据共享 在Java应用程序中,我们…

    Java 2023年5月26日
    00
  • SpringBoot实现物品收藏功能

    下面为你详细讲解如何使用 SpringBoot 实现物品收藏功能: 概述 使用 SpringBoot 可以简单快捷地实现 Web 应用的开发,本文将以 SpringBoot 为基础,使用 Maven 作为项目构建工具,使用 Thymeleaf 模板引擎渲染页面,使用 Hibernate 框架操作 MySQL 数据库,实现物品收藏功能。 前期准备 工具准备 I…

    Java 2023年5月23日
    00
  • Struts2中Action三种接收参数形式与简单的表单验证功能

    在Struts2中,Action可以通过三种形式接收参数: 在Action类中定义属性,并提供setter方法,在Action的execute方法中使用属性接收参数。 使用ActionContext.getContext().getParameters()方法获取请求参数Map,以键值对的形式接收参数。 实现ParameterAware接口,可以通过参数Ma…

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