采集微信文章和采集网站内容一样,都需要从一个列表页开始。而微信文章的列表页就是公众号里的查看历史消息页。现在网络上的其它微信采集器有的是利用搜狗搜索,采集方式虽然简单多了,但是内容不全。所以我们还是要从最标准最全面的公众号历史消息页来采集。
因为微信的限制,我们能复制到的链接是不完整的,在浏览器中无法打开看到内容。所以我们需要通过上一篇文章介绍的方法,使用anyproxy获取到一个完整的微信公众号历史消息页面的链接地址。
http://mp.weixin.qq.com/mp/getmasssendmsg"//img.jbzj.com/file_images/article/201712/201712041037004.jpg" alt="" />
红框部分就是完整的链接地址,将微信公众平台这个域名拼接在前面之后就可以在浏览器中打开了。
然后将页面向下拉,到html内容的结尾部分,我们可以看到一个json的变量就是历史消息的文章列表:
我们将msgList的变量值拷贝出来,用json格式化工具分析一下,我们就可以看到这个json是以下这个结构:
{ "list": [ { "app_msg_ext_info": { "author": "", "content": "", "content_url": "http://mp.weixin.qq.com/s", "copyright_stat": 100, "cover": "http://mmbiz.qpic.cn/mmbiz/MofBAcBsJ6X0xGrQ2XK5yQjzwb2eswxkRNBTgLtcqGziaFqwibzvtZAHCDkMeJU1fGZHpjoeibanPJ8rziaq68Akkg/0", "digest": "擦亮双眼,远离谣言。", "fileid": 505283695, "is_multi": 1, "multi_app_msg_item_list": [ { "author": "", "content": "", "content_url": "http://mp.weixin.qq.com/s", "copyright_stat": 100, "cover": "http://mmbiz.qpic.cn/mmbiz_png/MofBAcBsJ6XyaIn0qEDSSicBUBZbMYHYrhibia89ZnksCsUiaia2TLI1fyqjclibGa1hw3icP6oXeSpaWMjiabaghHl7yw/0", "digest": "12月28日,广州亚运城综合体育馆,内附购票入口~", "fileid": 0, "source_url": "http://wechat.show.wepiao.com/detail/ff764b0731b7465db03b56b998e1f2b8", "title": "2017微信公开课Pro版即将召开" }, ...//循环被省略 ], "source_url": "", "subtype": 9, "title": "谣言热榜 | 十一月朋友圈十大谣言" }, "comm_msg_info": { "content": "", "datetime": 1480933315, "fakeid": "3093134871", "id": 1000000010, "status": 2, "type": 49 //类型为49的时候是图文消息 } }, ...//循环被省略 ] }
简要的分析一下这个json(这里只介绍一些重要的信息,其它的被省略):
"list": [ //最外层的键名;只出现一次,所有内容都被它包含。 {//这个大阔号之内是一条多图文或单图文消息,通俗的说就是一天的群发都在这里 "app_msg_ext_info":{//图文消息的扩展信息 "content_url": "图文消息的链接地址", "cover": "封面图片", "digest": "摘要", "is_multi": "是否多图文,值为1和0", "multi_app_msg_item_list": [//这里面包含的是从第二条开始的图文消息,如果is_multi=0,这里将为空 { "content_url": "图文消息的链接地址", "cover": "封面图片", "digest": ""摘要"", "source_url": "阅读原文的地址", "title": "子内容标题" }, ...//循环被省略 ], "source_url": "阅读原文的地址", "title": "头条标题" }, "comm_msg_info":{//图文消息的基本信息 "datetime": '发布时间,值为unix时间戳', "type": 49 //类型为49的时候是图文消息 } }, ...//循环被省略 ]
在这里还要提到一点就是如果希望获取到时间更久远一些的历史消息内容,就需要在手机或模拟器中将页面向下拉,当拉到最底下的时候,微信将自动读取下一页的内容。下一页的链接地址和历史消息页的链接地址同样是getmasssendmsg开头的地址。但是内容就是只有json了,没有html了。直接解析json就可以了。
这时可以通过上一篇文章介绍的方法,使用anyproxy将msgList变量值正则匹配出来之后,异步提交到服务器,再从服务器上使用php的json_decode解析json成为数组。然后遍历循环数组。我们就可以得到每一篇文章的标题和链接地址。
如果只需要采集单一公众号的内容,完全可以在每天群发之后,通过anyproxy获取到完整的带有key和pass_ticket的链接地址。然后自己制作一个程序,手动将地址提交给自己的程序。使用例如php这样的语言来正则匹配到msgList,然后解析json。这样就不用修改anyproxy的rule,也不需要制作一个采集队列和跳转页面了。
微信公众号,历史消息页
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。