一:找到永久的历史信息列表:http://mp.weixin.qq.com/mp/getmasssendmsg?__biz=XXX==#wechat_redirect

将XXX==替换为自己的BIZ

二:4个参数可以唯一确定一篇微信文章:

__biz可以认为是微信公众平台对外公布的公众帐号的唯一id
mid是图文消息id
idx是发布的第几条消息(1就代表是头条位置消息)
sn是一个随机加密串(对于一篇图文消息是唯一的,如果你想问这个sn的生成规则是什么或者怎么破解,你基本上只能从微信公众平台开发团队才能得到答案)熬伪装

三:伪装微信客户端登陆,取历史信息页时,最重要4个参数:__biz;uin=;key=;pass_ticket=;这4个参数。【有时候需要手机配合】

四:取得general_msg_list 后,分析各个字段

  1. "list": [ //最外层的键名;只出现一次,所有内容都被它包含。
  2. {//这个大阔号之内是一条多图文或单图文消息,通俗的说就是一天的群发都在这里
  3. "app_msg_ext_info":{//图文消息的扩展信息
  4. "content_url": "图文消息的链接地址",
  5. "cover": "封面图片",
  6. "digest": "摘要",
  7. "is_multi": "是否多图文,值为1和0",
  8. "multi_app_msg_item_list": [//这里面包含的是从第二条开始的图文消息,如果is_multi=0,这里将为空
  9. {
  10. "content_url": "图文消息的链接地址",
  11. "cover": "封面图片",
  12. "digest": ""摘要"",
  13. "source_url": "阅读原文的地址",
  14. "title": "子内容标题"
  15. },
  16. ...//循环被省略
  17. ],
  18. "source_url": "阅读原文的地址",
  19. "title": "头条标题"
  20. },
  21. "comm_msg_info":{//图文消息的基本信息
  22. "datetime": '发布时间,值为unix时间戳',
  23. "type": 49 //类型为49的时候是图文消息
  24. }
  25. },
  26. ...//循环被省略
  27. ]

五:采集程序原型

建立表:

1、微信公众号表

  1. CREATE TABLE `weixin` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `biz` varchar(255) DEFAULT '' COMMENT '公众号唯一标识biz',
  4. `collect` int(11) DEFAULT '1' COMMENT '记录采集时间的时间戳',
  5. PRIMARY KEY (`id`)
  6. ) ;

2、微信文章表

  1. CREATE TABLE `post` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `biz` varchar(255) CHARACTER SET utf8 NOT NULL COMMENT '文章对应的公众号biz',
  4. `field_id` int(11) NOT NULL COMMENT '微信定义的一个id,每条文章唯一',
  5. `title` varchar(255) NOT NULL DEFAULT '' COMMENT '文章标题',
  6. `title_encode` text CHARACTER SET utf8 NOT NULL COMMENT '文章编码,防止文章出现emoji',
  7. `digest` varchar(500) NOT NULL DEFAULT '' COMMENT '文章摘要',
  8. `content_url` varchar(500) CHARACTER SET utf8 NOT NULL COMMENT '文章地址',
  9. `source_url` varchar(500) CHARACTER SET utf8 NOT NULL COMMENT '阅读原文地址',
  10. `cover` varchar(500) CHARACTER SET utf8 NOT NULL COMMENT '封面图片',
  11. `is_multi` int(11) NOT NULL COMMENT '是否多图文',
  12. `is_top` int(11) NOT NULL COMMENT '是否头条',
  13. `datetime` int(11) NOT NULL COMMENT '文章时间戳',
  14. `readNum` int(11) NOT NULL DEFAULT '1' COMMENT '文章阅读量',
  15. `likeNum` int(11) NOT NULL DEFAULT '0' COMMENT '文章点赞量',
  16. PRIMARY KEY (`id`)
  17. ) ;

3、采集队列表

  1. CREATE TABLE `tmplist` (
  2. `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  3. `content_url` varchar(255) DEFAULT NULL COMMENT '文章地址',
  4. `load` int(11) DEFAULT '0' COMMENT '读取中标记',
  5. PRIMARY KEY (`id`),
  6. UNIQUE KEY `content_url` (`content_url`)
  7. ) ;

采集:
1、getMsgJson.php:这个程序负责接收历史消息的json并解析后存入数据库

  1. <?
  2. $str = $_POST['str'];
  3. $url = $_POST['url'];//先获取到两个POST变量
  4. //先针对url参数进行操作
  5. parse_str(parse_url(htmlspecialchars_decode(urldecode($url)),PHP_URL_QUERY ),$query);//解析url地址
  6. $biz = $query['__biz'];//得到公众号的biz
  7. //接下来进行以下操作
  8. //从数据库中查询biz是否已经存在,如果不存在则插入,这代表着我们新添加了一个采集目标公众号。
  9. //再解析str变量
  10. $json = json_decode($str,true);//首先进行json_decode
  11. if(!$json){
  12. $json = json_decode(htmlspecialchars_decode($str),true);//如果不成功,就增加一步htmlspecialchars_decode
  13. }
  14. foreach($json['list'] as $k=>$v){
  15. $type = $v['comm_msg_info']['type'];
  16. if($type==49){//type=49代表是图文消息
  17. $content_url = str_replace("\\", "", htmlspecialchars_decode($v['app_msg_ext_info']['content_url']));//获得图文消息的链接地址
  18. $is_multi = $v['app_msg_ext_info']['is_multi'];//是否是多图文消息
  19. $datetime = $v['comm_msg_info']['datetime'];//图文消息发送时间
  20. //在这里将图文消息链接地址插入到采集队列库中(队列库将在后文介绍,主要目的是建立一个批量采集队列,另一个程序将根据队列安排下一个采集的公众号或者文章内容)
  21. //在这里根据$content_url从数据库中判断一下是否重复
  22. if('数据库中不存在相同的$content_url') {
  23. $fileid = $v['app_msg_ext_info']['fileid'];//一个微信给的id
  24. $title = $v['app_msg_ext_info']['title'];//文章标题
  25. $title_encode = urlencode(str_replace(" ", "", $title));//建议将标题进行编码,这样就可以存储emoji特殊符号了
  26. $digest = $v['app_msg_ext_info']['digest'];//文章摘要
  27. $source_url = str_replace("\\", "", htmlspecialchars_decode($v['app_msg_ext_info']['source_url']));//阅读原文的链接
  28. $cover = str_replace("\\", "", htmlspecialchars_decode($v['app_msg_ext_info']['cover']));//封面图片
  29. $is_top = 1;//标记一下是头条内容
  30. //现在存入数据库
  31. echo "头条标题:".$title.$lastId."\n";//这个echo可以显示在anyproxy的终端里
  32. }
  33. if($is_multi==1){//如果是多图文消息
  34. foreach($v['app_msg_ext_info']['multi_app_msg_item_list'] as $kk=>$vv){//循环后面的图文消息
  35. $content_url = str_replace("\\","",htmlspecialchars_decode($vv['content_url']));//图文消息链接地址
  36. //这里再次根据$content_url判断一下数据库中是否重复以免出错
  37. if('数据库中不存在相同的$content_url'){
  38. //在这里将图文消息链接地址插入到采集队列库中(队列库将在后文介绍,主要目的是建立一个批量采集队列,另一个程序将根据队列安排下一个采集的公众号或者文章内容)
  39. $title = $vv['title'];//文章标题
  40. $fileid = $vv['fileid'];//一个微信给的id
  41. $title_encode = urlencode(str_replace(" ","",$title));//建议将标题进行编码,这样就可以存储emoji特殊符号了
  42. $digest = htmlspecialchars($vv['digest']);//文章摘要
  43. $source_url = str_replace("\\","",htmlspecialchars_decode($vv['source_url']));//阅读原文的链接
  44. //$cover = getCover(str_replace("\\","",htmlspecialchars_decode($vv['cover'])));
  45. $cover = str_replace("\\","",htmlspecialchars_decode($vv['cover']));//封面图片
  46. //现在存入数据库
  47. echo "标题:".$title.$lastId."\n";
  48. }
  49. }
  50. }
  51. }
  52. }
  53. ?>

2、getMsgExt.php获取文章阅读量和点赞量的程序

  1. ?
  2. $str = $_POST['str'];
  3. $url = $_POST['url'];//先获取到两个POST变量
  4. //先针对url参数进行操作
  5. parse_str(parse_url(htmlspecialchars_decode(urldecode($url)),PHP_URL_QUERY ),$query);//解析url地址
  6. $biz = $query['__biz'];//得到公众号的biz
  7. $sn = $query['sn'];
  8. //再解析str变量
  9. $json = json_decode($str,true);//进行json_decode
  10. //$sql = "select * from `文章表` where `biz`='".$biz."' and `content_url` like '%".$sn."%'" limit 0,1;
  11. //根据biz和sn找到对应的文章
  12. $read_num = $json['appmsgstat']['read_num'];//阅读量
  13. $like_num = $json['appmsgstat']['like_num'];//点赞量
  14. //在这里同样根据sn在采集队列表中删除对应的文章,代表这篇文章可以移出采集队列了
  15. //$sql = "delete from `队列表` where `content_url` like '%".$sn."%'"
  16. //然后将阅读量和点赞量更新到文章表中。
  17. exit(json_encode($msg));//可以显示在anyproxy的终端里
  18. ?>

微信爬取过程中参数分析相关推荐

  1. 爬取过程中出现验证码_PCBA贴片的过程中为什么出现白点或白斑

    PCBA贴片加工的生产过程中,偶尔会出现一些加工缺陷,PCBA板上的白点或白斑就是其中之一.对于质量检测来说这种板子肯定是不能过关的,需要对这个问题的原因进行寻找,并总结经验,得出解决方法,在后续的P ...

  2. 晋江文学城爬取小说评论情感分析

    晋江文学城爬取小说评论情感分析 1. 收集数据 1.1 爬取晋江文学城收藏排行榜前50页的小说信息 2. 数据加载和预处理 2.1 格式转化 2.2 数据去重 2.3 短评去重 2.4 添加情绪标签 ...

  3. [python] 常用正则表达式爬取网页信息及分析HTML标签总结

    这篇文章主要是介绍Python爬取网页信息时,经常使用的正则表达式及方法.它是一篇总结性文章,实用性比较大,主要解决自己遇到的爬虫问题,也希望对你有所帮助~ 当然如果会Selenium基于自动化测试爬 ...

  4. 常用正则表达式爬取网页信息及分析HTML标签总结

    这篇文章主要是介绍Python爬取网页信息时,经常使用的正则表达式及方法.它是一篇总结性文章,实用性比较大,主要解决自己遇到的爬虫问题,也希望对你有所帮助~ 当然如果会Selenium基于自动化测试爬 ...

  5. beautifulsoup爬取网页中的表格_用 Python 爬取网页

    来自公众号:优达学城Udacity 作者:Kerry Parker 编译:欧剃 作为数据科学家的第一个任务,就是做网页爬取.那时候,我对使用代码从网站上获取数据这项技术完全一无所知,它偏偏又是最有逻辑 ...

  6. python爬取b站弹幕分析_python爬取B站视频弹幕分析并制作词云

    目录1.分析网页 2.爬虫+jieba分词+制作词云2.1爬虫 2.2jieba分词 2.3制作词云 3.成品展示 4.完整代码 1.分析网页 视频地址:https://www.bilibili.co ...

  7. 基于搜狗微信爬取微信公众号的文章

    1. 引入模块和函数 from requests_html import HTMLSession from urllib.parse import urlparse, parse_qs import ...

  8. 爬虫的基本原理:爬虫概述及爬取过程

    一.什么是爬虫 爬虫就是获取网页并提取和保存信息的自动化程序. 1)我们可以把互联网比作一张大网,而爬虫(网络爬虫)便是在网上爬行的蜘蛛.把网的节点比作一个个网页,爬虫爬到这就相当于访问了该页面,获取 ...

  9. 进军Json,以战养战 -- 爬取搜狗图片代码分析

    爬取搜狗图片代码分析 代码 代码功能 代码 代码解析 总结 代码 代码功能 从搜狗网页下载 n 张指定分类的图片并保存到指定的文件夹. 代码 # 导入相关的库 import requests impo ...

最新文章

  1. 【Python】Scrapy爬虫实战(豆瓣电影 Top 250)
  2. 京东某程序员哀叹:在大厂快待废了,出去面试问自己kafka,竟然全忘了!
  3. spring 学习—spring 的ioc底层原理(03)
  4. LINQ-to-SQL那点事~关于延时加载的性能,微软给出了不错的解决方案
  5. 代码编辑器揭露性格,你是哪一种?
  6. mac恢复iphone_免费下载:旧Mac和iPhone壁纸的令人震惊的完整档案
  7. leetcode数组相关
  8. Node.js跨域请求解决方案
  9. 刘逖:ETF市场迎来发展时机 可从产品创新等方面推动
  10. Win10升级后,文件夹背景变成黑色
  11. win7查询计算机硬盘sn,电脑win7系统查询硬盘序列号的方法
  12. AD15如何更新原理图库
  13. 关于KERNEL_SECURITY_CHECK_FAILURE蓝屏(BSOD)0x00000139错误解决思路
  14. 搭建jitsi的prosody出现的问题
  15. Java数独游戏破解工具源代码
  16. 现代计算机存储数据的基本单位是,计算机中存储数据的最小单位和存储容量的基本单位各是什么?...
  17. PS 2019 Mac版 自学入门系列(六)——裁剪和拉直图像
  18. 三星三防s8计算机功能在哪里,三星s8三防版怎么样 三防版三星s8配置参数介绍...
  19. 【小样本基础】有监督小样本,半监督小样本,无监督小样本
  20. Android经典项目案例开发实战宝典

热门文章

  1. 在网页地图图片上加注企业和“圳品”数量信息
  2. python设置画布大小_python-Tkinter画布自动调整大小
  3. 安卓手机查看连接到热点设备的ip地址
  4. c语言hypot函数,hypot()函数以及C ++中的示例
  5. usb hid gadget驱动
  6. Win11怎么查MAC地址?Win11电脑如何查看mac地址?
  7. Java Game Resource
  8. crt格式证书转pem格式证书
  9. 缺少dll文件的终极解决办法!
  10. 如何把wps随机数据固定_WPS Excel:巧用随机函数rand和randbetween生成各种数据