简易的java爬虫项目
本项目仅供java新手学习交流,由于本人也是一名java初学者,所以项目中也有很多不规范的地方,希望各位高手不吝赐教,在评论区指出我的不足,我会虚心学习;
成果预览:
在开始讲述前想来展示一下项目的最终效果(下面是项目的运行效果和最终插入的数据):
需求简介:
我想要获取一个中医网站中的所有的中药材的信息并将他们存入到我的数据库中用来自己进行分析和学习。药材的信息包括:药材名,别名,功能主治,性状,味道,归经,来源,用法用量。
页面分析:
我们需要的数据都是以 “http://www.zysj.com.cn/zhongyaocai/yaocai”开头的链接地址,如“ http://www.zysj.com.cn/zhongyaocai/yaocai_a/anchundan.html ”,“ http://www.zysj.com.cn/zhongyaocai/yaocai_a/anyou.html ”,“ http://www.zysj.com.cn/zhongyaocai/yaocai_l/longchuanhuajingye.html ”。我们需要的内容是该页面内的以下部分:
https://u.wechat.com/MCJSekwcLNKDlSdbx9E7MTc (二维码自动识别)
通过观察源代码发现,我们主要需要或得到如下内容的标签:
分析完毕后,我们就来进行代码操作做吧!
项目包含技术:
- hutool工具包(用于将爬虫获取的数据插入数据库)
- druid
- HttpClient(用于获取页面内容)
- HtmlCleaner(用于在从获取的页面内容中提取有用的内容)
项目运行流程简述:
我提供一个目标网站的链接,然后爬虫自己进行分析,抓取并储存数据。
原理概述:
首先,在讲原理前需要展示一下项目的结构:
- Bean包的封装对象用于数据库插入
- URlProcessor包下的URlProcessor类用于获取存放目标数据的页面链接。
- ParsingPage包下的ParsingPage类用于获取页面内容。
- GetContent包下的GetContent类用于将从ParsingPage中获取页面内容中提取出我们想要的有效数据。
- SqlUtil包下的SqlUtil类用于将获取的有效数据存入数据库中
- StrUtil用于将得到的内容进行一些字符串处理
下面是该项目的工作流程图:
具体实现;
Main类下的main方法用于启动该项目
package
URlProcessor类:该类下有getContent和parsingPage方法,(这两个方法的作用跟上面的Parsing Page和GetContent两个类的作用相同。只是本人技术有限,没能做到代码重构,欢迎各位小伙伴们指教。)该类通过了递归调用不断地解析页面获取有效的url,如果url有效,有效url传给ParsingPage类来进行进一步的操作。下面是
package
GetContent类:该类中的getContent方法通过页面链接获取页面内容,并且从页面内容中获取正确的数据,并赋值给一个Herbal对象中,并且返回该对象。
package
ParsingPage类,通过链接获取页面的整体内容
package
StrUtil类
package