前言
由于公司业务需要,需要获取客户提供的微信微信官方账号历史文章,并每天更新。很明显,每天300多个微信官方账号不能手动查,问题提交给IT团队。对于爱爬虫的人,我肯定要演他。我以前在搜狗做过微信爬虫,然后一直在做java web。这个**重新点燃了我对爬行动物的热爱。第一次用春云架构做爬虫用了20多天,终于定下来了。接下来我会通过一系列的文章分享这个**的经验,并呈现源代码给大家指正!
一.系统介绍
本系统基于Java开发,只需简单配置微信官方账号名称或微信号,即可定时或即时捕捉微信官方账号上的文章(包括阅读量、赞、读)。
二、系统架构
技术架构
春云、回弹、米巴蒂斯-Plus、Nacos、RocketMq、nginx
保存
Mysql、MongoDB、Redis、Solr
高速缓存
使用心得
机构
小提琴手
三、制度的利弊
系统优势
1.微信官方账号配置好后,可以通过Fiddler和Websocket的JS注入功能全自动抓取;2.系统是高可用性的分布式架构;3.火箭Mq消息队列解耦,可以解决网络抖动导致的收集失败。三次消费不成功,日志会记录到mysql,保证文章的完整性;4.可以加入任意数量的微信号,提高采集效率,抵抗反爬限制;5.Redis缓存每个微信号24小时内收集的记录,防止标题;6.Nacos作为配置中心,可以通过热配置实时调整采集频率;7.将收集的数据存储在Solr集群中,提高检索速度;8.将捕获包返回的记录存储在MongoDB存档中,以便查看错误日志。
系统缺点:
1.通过真机收集消息。如果需要收集大量微信官方账号,需要有多个微信号作为支持(当天账号达到限制,可以通过抓取微信公众平台界面获取消息);2.并不是微信官方账号一发消息就能抓到。采集时间由系统设定,消息有一定的滞后(如果微信官方账号不多,可以通过增加采集频率来优化微信号数量)。
四.模块简介
由于后面会增加管理系统和API调用函数,所以提前封装了一些函数。
公共-ws-starter
公共模块:存储工具类、实体类等公共消息。
redis-ws-starter
Redis模块:
spring-boot-starter-data-Redis的二次封装,公开封装的Redis工具类和Redisson工具类。
rockemq-ws-starter
火箭Mq模块:针对
火箭MQ-spring-boot-starter的二次封装,提供消耗重试和故障日志记录功能。
db-ws-starter
Mysql数据源模块:封装mysql数据源,支持多数据源,通过自定义标注实现数据源的动态切换。
sql-wx-spider
Mysql数据库模块:提供操作mysql数据库的所有功能。
pc-wx-spider
PC端采集模块:包括微信官方账号历史消息PC端采集的相关功能。
java-wx-spider
Java提取模块:包含Java程序提取文章内容的相关功能。
mobile-wx-spider
模拟器采集模块:包括通过模拟器或手机采集信息的交互量相关功能。
动词 (verb的缩写)总流程图
第六,运行截图
个人电脑和手机
控制台
运行结束
总结
**的亲测现已投入运营,在**开发中已经解决了微信在搜狗的临时链接到永久链接的问题,希望对被类似业务困扰的老铁有所帮助。现在,做java就像逆水行舟。不进则退。不知道什么时候会涉及到。祝大家都有自己的葵花宝典。看到这个不就给收藏了吗?