命运唯所遇,循环不可寻。
1 前言
在之前的文章中,python爬虫-获取股票的k线图 已经介绍了如果通过 python
爬虫来获取股票的信息。在本文中则使用 java
通过爬虫获取股票的列表信息以及股票的基本信息,本文将使用到 jsoup
和 hutool
来实现接口和网页的信息抓取。最终的目的是为了获取市场上所有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。