MagicToe是一个基于Java爬虫框架WebMagic的Java爬虫实战案例,MagicToe提供了从获取数据到数据持久化、可视化分析以及构建简单的代理池等一系列完整流程,旨在为初涉Java爬虫的程序员提供一个参考教程和一整套完整的解决方案。
- hupu-spider:爬虫功能实现模块,使用WebMagic + SpringBoot + MyBatis基础架构,NLP工具包是Ansj中文分词,定制抽取逻辑,将爬取的数据持久化到MySQL数据库中,本仓库中的代码示例爬取的是虎扑步行街。
- data-analysis:数据分析及可视化模块,使用Spring + SpringMVC + MyBatis的基础架构,数据可视化采用的前端技术是 jsp + Echarts。
- ip-spider(可选):爬取代理网站模块,技术选型同hupu-spider,将代理网站上的免费代理地址爬取到本地数据库中,实现一个简单的IP池,以供hupu-spider作为代理使用。
爬虫模块环境准备:
- JDK 1.8+
- maven 4.0.0+
- webmagic 0.7.3+
- ansj_seg 5.1.1+
- springboot 1.5.7+
- mybatis 1.3.1+
- mysql 5.1.21+
运行爬虫: 以爬取虎扑步行街的帖子、用户和评论为例。
- 初始化数据库
在本地MySQL中创建自己的schema,执行初始化数据库的脚本
hupu-spider/src/main/resources/db.sql
,并根据自己的数据库信息修改配置文件hupu-spider/src/main/resources/application.yml
中的数据源信息。 - 启动爬虫
hupuspider通过URL请求的方式运行,在浏览器中键入 localhost:8080/(默认端口为8080,如果遇到端口冲突,可以在配置文件
hupu-spider/src/main/resources/application.yml
中修改端口),爬虫即可开始运行了。 - 运行数据可视化模块
将数据爬取到数据库中后,直接在Tomcat中运行data-analysis模块即可,通过在浏览器中输入不同的URL可以得到不同的图表,具体请查看
data-analysis/src/main/java/com/crow/web/EchartsController.java
。
以虎扑用户的地域分布为例:
更多详细的分析请参考我的博客《数据不说谎:用网络爬虫探秘虎扑步行街》。
- 使用Redis分布式队列实现分布式爬取。
- 使用Quartz实现定时更新数据。
- Personal Website:Crow Home
- 知乎:Martin Crow