基于Spring Cloud的全自动化微信公众号消息采集系统
前言
由于公司业务需求,需要获取客户提供的微信公众号的历史文章并每天进行更新,三百多个公众号显然不能通过人工去每天查看,问题提交到了IT组。对于热爱爬虫的我肯定要盘他,之前做过搜狗的微信爬虫,后来一直致力于java web了,这个项目又重新燃起了我对爬虫的热爱,第一次使用spring cloud架构来做爬虫,历时二十多天,终于搞定。接下来,我将通过一系列文章来分享此次项目经历,并奉上源码供大家指正!
一、系统简介
本系统是基于Java开发,可通过简单配置公众号名称或微信号,实现定时或即时抓取微信公众号的文章(包括阅读量、点赞、在看)。
二、系统架构
技术架构
Spring Cloud、SpringBoot、Mybatis-Plus、Nacos、RocketMq、nginx
存储
Mysql、MongoDB、Redis、Solr
缓存
Redis
代理
Fiddler
三、系统优劣性
系统优点
1、配置完公众号后可通过Fiddler的JS注入功能和Websocket实现全自动抓取; 2、系统为分布式架构,具有高可用性; 3、RocketMq消息队列进行解耦,可解决网络抖动导致采集失败情况,若消费三次还未成功则将日志记录到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
模拟器采集模块:包含通过模拟器或手机端采集消息的互动量相关功能。
五、大体流程图
![](/assets/blank.gif)
六、运行截图
PC和移动端
![](/assets/blank.gif)
![](/assets/blank.gif)
控制台
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
运行结束
![](/assets/blank.gif)
总结
项目亲测可用现在已经在运行中,并且在项目开发中解决了微信的搜狗临时链接转永久链接问题,希望能对被相似业务困扰的老铁有所帮助。如今做java如逆水行舟,不进则退,不知什么时候就被卷了进去,祝愿每个人都有一本自己的葵花宝典,看到这还不给个收藏吗。
http://www.taodudu.cc/news/show-5733261.html
相关文章:
- [基于Python的微信公众号后台开发:2]文字消息的接收与解密
- Eclipse HTML乱码设置
- 企业通过微信支付到个人银行卡的开发过程
- 微信支付----企业付款到零钱和银行卡规则
- 微信支付0.2%费率开通详细操作教程
- 平台资金提现解决方案之实现微信付款到银行卡功能
- java服务端微信商户企业付款提现到个人银行卡实现
- 微信企业付款到银行卡
- 聊聊“直播”
- LIVE555再学习 -- 单播、多播、广播、直播、点播 都是个啥?
- 微信小程序-申请小程序
- 小米手环8和小米手环7的区别
- CentOS7——yum源设置
- dell服务器装centos7认不到硬盘_【Linux】DELL R720 服务器 安装 centos 7经历
- lv官网编码查询_【干货】商品条码(条形码)哪里查?官方查询网站和APP推荐给你~...
- C语言中堆和栈的区别
- java 堆和栈 数据结构_数据结构的栈和堆和程序中的堆和栈
- php栈内存和堆内存的区别,内存中堆和栈的区别
- 堆和栈的概念和区别 python_堆和栈的概念和区别(转载)
- php 堆内存和栈内存,内存分配堆与栈的区别
- 栈和堆得区别。
- e世界服务器不显示皮肤怎么办,王者荣耀:11号墨子皮肤优化完成,碎片商城更新,阿古朵被削弱...
- 王者服务器维护什么时间结束s22,王者荣耀S22赛季
- 七夕王者荣耀服务器维护,王者荣耀新皮肤计划表泄露?伽罗守约皆有新皮肤,网友:可信度不高!...
- 王者服务器要维修到什么时候2021,王者荣耀2021世冠时间 2021世冠什么时候开始...
- 王者荣耀2022五一劳动节返场皮肤有哪些 返厂皮肤介绍
- 【娱乐】王者荣耀·[优选秘宝]抽奖模拟程序
- 王者荣耀大乔520皮肤展示 大乔520皮肤是限定吗
- 王者荣耀2022五一劳动节返场皮肤有哪些 返场皮肤介绍
- AVFoundation 视频常用套路: 拍照聚焦、曝光、闪光灯,拍视频手电筒
基于Spring Cloud的全自动化微信公众号消息采集系统相关推荐
- [Nodejs]基于Nodejs构建属于自己的微信公众号
摘要: 微信,庞大的用户基数,极强的用户粘性,在近两年吸引了无数的开发者注意力. Nodejs,近两年发展非常快的开发工具,尤其适合构建移动后台.本文就以笔者自己开发的实例,来描述如何基于Nodejs ...
- 基于Nodejs构建属于自己的微信公众号
摘要: 微信,庞大的用户基数,极强的用户粘性,在近两年吸引了无数的开发者注意力. Nodejs,近两年发展非常快的开发工具,尤其适合构建移动后台.本文就以笔者自己开发的实例,来描述如何基于Nodejs ...
- 微信公众号基本设置服务器设置教程,最新最全的微信公众号开发者模式配置
微信公众号的开发分为编辑模式和开发者模式,那么最新最全的微信公众号开发者模式配置是什么呢,下面是学习啦小编收集整理的最新最全的微信公众号开发者模式配置,希望对大家有帮助~~ 最新最全的微信公众号开发者 ...
- 微信公众号消息模板发送
微信公众号消息模板发送 微信公众号消息模板群发功能 开通申请模板消息功能 获取模板消息发送所需参数 AccessToken pojo类 TemplateData pojo类 WxTagsEntity ...
- java 微信群发多图文_[Java教程]httpClient实现微信公众号消息群发
[Java教程]httpClient实现微信公众号消息群发 0 2016-09-21 20:00:10 1.实现功能 向关注了微信公众号的微信用户群发消息.(可以是所有的用户,也可以是提供了微信ope ...
- 微信公众号消息增加跳转链接
微信公众号消息增加跳转链接 背景: 用户在首次关注公众号后会弹出一条欢迎消息.给这条消息增加跳转的链接,使得用户在点击之后可以跳转 到一个你希望用户访问的页面. 解决方案: 根据微信开发者文档,找到了 ...
- 微信公众号消息通知手把手教程
项目需求:微信公众号消息推送 首先你需要我给你提供以下地址 方便你进行开发 准备阶段: a 模版消息推送开发文档 链接 b 微信公众号测试号地址 链接 c 微信公众平台接口调试工具 链接 ...
- 微信公众号消息推送开发(模板消息):点击推送消息跳转到网页或者小程序(三)
需求场景: 点击推送的消息后跳转到小程序中的某个页面,或者跳转到某一个网页上,例如有这样一个需求,在商城平台购买产品后,需要通过公众号给用户推送订单详细并且点击消息可以看到对应的订单详情.以下我将在微 ...
- 【监听微信公众号消息】
监听微信公众号消息 效果图如下: 环境要求 效果图如下: 环境要求 需要windows服务器,登陆上微信.获取到的消息是xml格式,需要解析内容获取自己想要的公众号推送的消息. 详情:https:// ...
最新文章
- java list 删除 遍历_Java list利用遍历进行删除操作3种方法解析
- 2017年本博客知识体系引导(更新至2017.8.11)
- __asm___错误:“”前应有'=',',',',','asm'或'_attribute_'
- 剑指offer(21)栈的压入、弹出序列
- 想拥有高清壁纸不用那么麻烦!
- 水仙花数python代码输入一个介于3到5的正整数_Python练习题——自幂数(水仙花数)...
- extjs office java_Extjs使用(最最基础)
- I.MX6 Android shutdown shell command
- python:生成器
- 软件评测师考试备考资料分享
- INSPINIA ADMIN 开发框架
- 在thinkpad sl400上U盘安装centos6.3的过程
- plist图片列表分割拆分器(修复输出图片错误的BUG)
- 怎么显示文件后缀名?很容易的几个步骤
- Android的SharedPreferences和SQLite
- CentOS各个版本支持周期
- Koreographer音乐插件基本使用
- 简便的进制转换方法(不简便打我,反正也打不到,hhh)
- R语言实现灰色预测模型gm11
- 中山纪念中学集训日志