Java 爬虫获取股票信息实战

命运唯所遇,循环不可寻。

1 前言

在之前的文章中,python爬虫-获取股票的k线图 已经介绍了如果通过 python 爬虫来获取股票的信息。在本文中则使用 java 通过爬虫获取股票的列表信息以及股票的基本信息,本文将使用到 jsouphutool 来实现接口和网页的信息抓取。最终的目的是为了获取市场上所有stock的信息,查找那些高股息的股票,听说有些 stock 的股息率比存款利率高多了,想研究一下。

2 数据来源以及分析

之前的文章中,采用的是东方财富网的数据,但是其数据没有股息率的指标,还需要运用数据计算,偶然间发现了雪球网站上有对应的指标,还有近一年的最高价与最低价,还有今年来的涨幅,这些指标减轻了一些计算的过程,如下图所示:

如上图所示,分页列表数据可以获取的信息很多,不仅包括股票代码和名称,还有市值、市盈率、市净率等信息,但是返回的字段比较多,需要和详情页的数据进行对比,才能知道字段的具体含义,此外关于数字类型接口返回的了科学表达式的方法,还需要进行处理。

bash 复制代码
# 股票列表访问地址
https://xueqiu.com/hq#exchange=CN&firstName=1&secondName=1_0
# 获取股票行情页面
https://xueqiu.com/S/SH601919
# 获取网站列表分页接口数据
https://xueqiu.com/hq#exchange=CN&firstName=1&secondName=1_0&order=desc&order_by=dividend_yield

如下图所示,所有的股票基本指标信息都可以从下图红框内获取,这里需要解析的是网站页面,通过 jsoup 可以获取对应的元素位置并获取对应的数值。

综上,作者将采用解析 html 的方式来获取信息,感兴趣的读者可以研究一下接口列表字段的返回值含义。

3 数据获取

股票数据信息的获取,分为两个部分,第一部分是从股票列表中获取获取代码,第二部分是根据股票代码获取股票详情页面,通过 jsoup 来抓取标签数据。

3.1 列表数据获取

获取数据列表信息使用的 hutool 工具类来处理,接口地址已经在上个小节中展示,需要注意的是这个是分页查询的,而且在访问接口时,需要从添加请求头 cookie 参数,这里不需要进行登录,从浏览器控制台的请求头中拿到一个 cookie 添加即可。

雪球返回的报文数据报文格式为 json,从 data -> list 中获取股票的数据节点,如上图所示,通过简单的对比就可以判断出字段的含义:

sql 复制代码
# 目前获取到的字段释义,这里只是部分内容
symbol 股票代码
name 股票名称
current 当前价格
percent 当前涨跌幅
chg 当前涨跌额
current_year_percent 当年涨跌幅
amplitude 振幅
dividend_yield 股息率
float_market_capital 流通市值
market_capital 总市值
turnover_rate 换手率
volume 成交量
amount 成交额
pe_ttm 市盈率
pb 市净率

如上代码所示,就可以获取股票的基本信息,我们需要声明一个 Stock 对象,用来封装股票的信息,在获取到列表信息后,再获取单个股票信息的信息,即可拿到完整的信息。

3.2 详细信息获取

获取到股票的代码后,就可以通过详情页面获取详细信息,这里先通过 hutool 获取详情页面的信息,然后通过 jsoup 来解析 html 文件内容。

通过分析 dom 树,可以通过 class="quote-container" 来获取信息内容, 所有的信息都在这个 div 中,首先需要解析 1755 球友关注 休市 08-04 15:34:51 北京时间, 我们需要从其中解析出股票的关注度(投资需要反人性)以及当前数据的时间,数据都空格做间隔,第一个和第四个数据就是我们需要获取的数据。

股票当天的表现数据都是在一个 class="quote-info"table 中,每个单元格 td 都保存着一个数据,我们需要解析每一个 td ,将将节点中的数据以 进行分割,即可得到一个 key-value 的结构,然后可以通过对应 key 来获取数据,这样的实现方便很多,但缺点是不优雅,存储的 key 为中文。

3.3 信息结果

通过以上的解析,我们已经写了两个方法,最终在 main 方法中将两个方法结合一下,就可以得到最终的结果,这里只是简单的打印了股票代码和名称,价格,市盈率等信息。

4 总结

在本文中,主要介绍了在雪球上获取股票信息的方法,使用 java 作为开发语言进行数据的抓取和处理,在后续的文章中,将继续进行数据的分析,从雪球抓取股票的 k 线数据,并且将数据保存至数据库中。欢迎大家的关注,本文中所涉及的代码已经上传至 github, 欢迎大家点赞关注。项目 github 地址 springboot-auth

相关推荐
qq_2518364573 小时前
基于springboot3 VUE3 火车订票系统前后端分离项目适合新手学习的项目包含 智能客服 换乘算法
java·开发语言·spring boot·后端·学习
supingemail3 小时前
Spring Boot 的高级特性与经典的设计模式应用
spring boot·后端·设计模式
gxn_mmf4 小时前
典籍知识问答模块AI问答bug修改
前端·javascript·后端·bug
北漂老男孩5 小时前
Spring 框架核心机制深度解析【AI模型互搏生成】
java·后端·spring
c无序6 小时前
【Go-2】基本语法与数据类型
开发语言·后端·golang
火龙谷6 小时前
【爬虫】DrissionPage-8.1
爬虫
攒了一袋星辰7 小时前
Spring是如何实现scope作用域支持
java·后端·spring
小黑屋说YYDS7 小时前
Spring Validation校验
java·后端·spring
接着奏乐接着舞7 小时前
spring boot 注解 @bean
spring boot·后端·python
fashia8 小时前
Java转Go日记(四十四):Sql构建
开发语言·后端·golang·go