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

优采云 发布时间: 2021-12-24 11:00

  自动采集系统(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,可以解决采集由于网络抖动导致的失败,如果3次消费不成功,日志会记录到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抽取模块:收录java程序抽取文章的内容相关功能。

  移动-wx-蜘蛛

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

  五、一般流程图

  

  六、 在 PC 和手机上运行截图

  

  

  安慰

  

  

  

  运行结束

  

  总结

  项目亲测现已上线,项目开发中解决了微信搜狗临时链接永久链接问题,希望能帮助到被同类业务困扰的老铁。如今,做java就像逆流而上。不前进就会后退。我不知道你什么时候参与。我希望每个人都有自己的向日葵采集。如果你看到这个,你不把它给一个采集吗?

  原文链接:/post/6956499860996489230

  如果觉得这篇文章对你有帮助,可以点击首页一起学习进步

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线