自动采集系统(spring使用springcloud架构来做爬虫,历时二十多天,终于搞定 )

优采云 发布时间: 2021-08-30 01:07

  自动采集系统(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 消息队列可以解耦。解决网络抖动导致采集失败的问题。 3次消费不成功,将日志log到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-starter

  RocketMq 模块:是

  rocketmq-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

  Simulator采集模块:收录与模拟器或手机采集消息交互量相关的功能。

  五、通用流程图

  

  六、运行截图PC端和移动端

  

  

  控制面板

  

  

  

  操作结束

  

  总结

  项目亲测上线,项目开发中解决了微信搜狗临时链接永久链接问题。希望能帮到被类似业务困扰的老铁。

  我最近整理了一套完整的《JAVA核心知识点汇总》。老实说,作为Java程序员,无论是否需要面试,都应该好好看看这些资料。拿到了总没有亏~我的很多粉丝也收到了腾讯字节快手等公司的offer

  Java 高级组

  

  好的,以上就是本文的全部内容。如果你觉得有所收获,记得三联,我们下期再见。

  

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线