这是我参与11月更文挑战的第2天,活动详情查看:2021最后一次更文挑战
1. 简介
上篇 基金列表获取之Java"伪"爬虫 简单讲解了如何获取基金列表详情,浅显易懂,没有什么难度。加下来将要继续分享如何使用 Java 爬虫分析如何抓取基金的详情信息及内容的展示。
2.基金详情抓取
# 这里直接给大家一个基金的详情页面地址,进行分析
http://fund.eastmoney.com/009265.html
# 这里悄悄地告诉你一个小秘密,简单分析下这个url就会知道,前半部分就固定的格式,后半部分 '009265' 即为基金代码
复制代码
基金详情页面展示如下:
点击基金概况进入该基金的相关内容介绍信息,如下:
在基金的概况页面,可以获取基金全称,基金简称、发行日期、成立日期/规模等等相关信息,可以让基民快速的了解当前基金的一些信息,用户根据自己的需要进行收藏关注、后期购买等相关操作。
小伙伴可能会疑惑,进入基金页面后,如何自动进入基金概况页面呢,如何去解析对应的 "基金概况" 访问链接呢。额,其实我也不知道,你信吗 。
# 基金概况访问地址
http://fundf10.eastmoney.com/jbgk_009265.html
# 小伙伴仔细的瞅一瞅,地址是不是很简单呢
# http://fundf10.eastmoney.com/ + "基金概况"的首字母 "jbgk_" + 基金代码 + ".html"
复制代码
3. 解析详情内容
根据页面进行分析,获取对应信息在Html 中的标签内容,如图,可以根据**class= " txt_cont "
** 标签进行解析对应的数据信息
怎么分析呢,Java 爬虫常用 Jsoup 进行Html 网页的分析。
<!-- 引入Jsoup 依赖 -->
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.13.1</version>
</dependency>
复制代码
// 实现具体逻辑如下
Connection connection = Jsoup.connect("http://fundf10.eastmoney.com/jbgk_009265.html");
Document doc = connection.get();
// 根据 class标签进行解析
Elements element = doc.getElementsByClass("txt_cont");
// 获取表格中的 "th" "td" 文本信息
Elements th = element.select("th");
Elements td = element.select("td");
for (int i = 0; i < th.size(); i++) {
// 打印获取到的内容信息
System.out.println(th.get(i).text() + ": " + td.get(i).text());
}
复制代码
基金全称: 易方达消费精选股票型证券投资基金
基金简称: 易方达消费精选股票
基金代码: 009265(前端)
基金类型: 股票型
发行日期: 2020年04月08日
成立日期/规模: 2020年04月13日 / 79.147亿份
资产规模: 71.23亿元(截止至:2021年09月30日)
份额规模: 58.9184亿份(截止至:2021年09月30日)
基金管理人: 易方达基金
基金托管人: 建设银行
基金经理人: 萧楠
成立来分红: 每份累计0.00元(0次)
管理费率: 1.50%(每年)
托管费率: 0.25%(每年)
销售服务费率: ---(每年)
最高认购费率: 1.20%(前端) 天天基金优惠费率:0.12%(前端)
最高申购费率: 1.50%(前端) 天天基金优惠费率:0.15%(前端)
最高赎回费率: 1.50%(前端)
业绩比较基准: 中证内地消费主题指数收益率×50%+中证香港300消费指数收益率×35%+中债总指数收益率×15%
跟踪标的: 该基金无跟踪标的
复制代码
以上就是对基金概况信息的简单解析。
4. Jsoup 常用 Api
可以选择官方文档进行查看,官方地址,可以根据自己的需要进行选择合适的方法进行 Html 文档的解析。
本文主要使用了 getsByClass
和 select
两个方法,简单讲解下。
-
getElementsByClass
通过 class 标签属性获取对应的 Html 元素
-
select
返回的是 Elements 元素集合Element 元素里面存在超链接等 Html 属性,所以最终获取文本的时候使用 ".text()" 方法 复制代码
喜欢的小伙伴记得点赞,欢迎留言进行探讨
【参考文章】 juejin.cn/post/703119…