文章采集系统(spring使用springcloud架构来做爬虫,历时二十多天,终于搞定)
优采云 发布时间: 2021-12-26 17:26文章采集系统(spring使用springcloud架构来做爬虫,历时二十多天,终于搞定)
前言
因公司业务需要,需要获取客户提供的微信公众号历史文章,并每日更新。显然,300多个公众号无法每天手动检查,问题提交给IT团队。对于喜欢爬虫的人来说,我绝对想要他。之前用过搜狗的微信爬虫,后来一直在做java web。这个项目重新点燃了我对爬虫的热爱。首次使用spring cloud架构做爬虫。历时20多天,终于搞定。接下来我将通过系列文章分享项目经验,并提供源码供大家指正!
一、系统介绍
本系统是基于Java开发的。只需配置公众号名称或微信公众号,即可抓取微信公众号文章(包括阅读、点赞、正在观看)。
二、系统架构技术架构
Spring Cloud、SpringBoot、Mybatis-Plus、Nacos、RocketMq、nginx
贮存
Mysql、MongoDB、Redis、Solr
缓存
Redis
演戏
提琴手
三、系统优缺点 系统优点
1、配置公众号后,可以使用Fiddler的JS注入功能和Websocket实现自动爬取;2、系统为分布式架构,高可用;3、RocketMq 消息队列解决方案 Coupling 可以解决网络抖动导致的采集失败问题。如果三次消费不成功,日志会记录到mysql中,保证文章的完整性;4、可以添加任意数量的微信信号,提高采集效率,抵制反攀登限制;5、Redis在24小时内缓存每个微信账号的收款记录,防止账号被关闭;6、Nacos作为配置中心,可以通过热配置实时调整采集频率;7、 将采集
的数据存储在Solr集群中,提高检索速度;8、 将捕获返回的记录存储到MongoDB存档中,方便查看错误日志。
系统缺点:
1、 通过真实手机和真实账户采集
消息。如果需要采集
大量公众号,需要有多个微信帐号作为支持(如果当天达到上限,可以通过微信官方平台界面爬取消息);2、不是公众号发完就可以立即抓取,采集
时间是系统设置的,留言有一定的滞后性(如果公众号不多,微信信号数是足够了,可以通过增加采集
频率来优化)。
四、模块介绍
由于后面会添加管理系统和API调用函数,所以提前封装了一些函数。
common-ws-starter
公共模块:存储工具类、实体类等公共消息。
redis-ws-starter
Redis 模块:是
spring-boot-starter-data-redis的二次包暴露了打包好的Redis工具类和Redisson工具类。
RocketMQ-WS-启动器
RocketMQ 模块:是
Rocketmq-spring-boot-starter 的二次封装提供了消费重试和故障日志记录功能。
db-ws-starter
mysql数据源模块:封装mysql数据源,支持多数据源,自定义注解实现数据源动态切换。
sql-wx-蜘蛛
mysql数据库模块:提供mysql数据库操作的所有功能。
pc-wx-蜘蛛
PC端采集模块:收录
PC端公众号历史消息采集相关功能。
java-wx-蜘蛛
Java Extraction Module:收录
与java程序提取文章内容相关的功能。
移动-wx-蜘蛛
模拟器采集模块:收录
与通过模拟器或手机采集消息的交互量相关的功能。
五、一般流程图
六、 在 PC 和手机上运行截图
安慰
运行结束
总结
项目亲测现已上线,项目开发中解决了微信搜狗临时链接永久链接问题,希望能帮助到被同类业务困扰的老铁。如今,做java就像逆流而上。不前进就会后退。我不知道你什么时候参与。我希望每个人都有自己的向日葵采集
。如果你看到这个,你不把它给一个采集
吗?