文章采集内容(采集微信文章和采集网站内容一样的查看方法获取到一个)
优采云 发布时间: 2021-08-28 17:02文章采集内容(采集微信文章和采集网站内容一样的查看方法获取到一个)
采集微信文章和采集网站一样,都需要以列表页开头。而微信文章的列表页是公众号中的浏览历史信息页。网上其他一些微信采集器现在都在用搜狗搜索。 采集方法虽然简单很多,但内容并不完整。所以我们还是要从最标准最全面的公众号历史页面采集来。
由于微信的限制,我们可以复制到的链接不完整,无法在浏览器中打开内容。因此,我们需要使用anyproxy,通过上一篇文章介绍的方法,获取一个完整的微信公众号历史消息页面的链接地址。
http://mp.weixin.qq.com/mp/getmasssendmsg?__biz=MjM5NDAwMTA2MA==&uin=NzM4MTk1ODgx&key=bf9387*敏*感*词*d02682e186a298a18276d8e0555e3ab51d81ca46de339e6082eb767343bef610edd80c9e1bfda66c2b62751511f7cc091a33a029709e94f0d1604e11220fc099a27b2e2d29db75cc0849d4bf&devicetype=android-17&version=26031c34&lang=zh_CN&nettype=WIFI&ascene=3&pass_ticket=Iox5ZdpRhrSxGYEeopVJwTBP7kZj51GYyEL24AT5Zyx%2BBoEMdPDBtOun1F%2F9ENSz&wx_header=1
如上一篇文章提到的,biz参数是公众号ID,uin是用户ID。目前,uin是所有公众号中唯一的一个。另外两个重要参数key和pass_ticket由微信客户端补充。
所以在这个地址失效之前,我们可以通过浏览器查看原文来获取文章历史消息列表。如果我们想自动分析内容,我们也可以用没有过期的key做一个程序。用pass_ticket的链接地址提交,然后通过php程序获取文章列表。
最近有朋友告诉我,他的采集目标是单个公众号。我觉得没必要用上一篇文章写的批处理采集方法。那么我们来看看如何在历史新闻页面中获取文章列表。通过分析文章列表,我们可以得到这个公众号的所有内容链接地址,然后采集内容就好了。
如果在anyproxy web界面正确配置了证书,可以显示https的内容。网页界面地址为:8002,其中localhost可以替换为自己的IP地址或域名。从列表中找到getmasssendmsg开头的记录,点击它,右侧会显示这条记录的详细信息:
红框是完整的链接地址。将微信公众平台的域名拼接到前面后,就可以在浏览器中打开了。
然后下拉页面到html内容的最后,我们可以看到一个json变量就是文章历史消息列表:
我们复制msgList的变量值,用json格式化工具分析,可以看到json的结构如下:
{
"list": [
{
"app_msg_ext_info": {
"author": "",
"content": "",
"content_url": "http://mp.weixin.qq.com/s?__biz=MzA5MzEzNDg3MQ==&mid=2652767427&idx=1&sn=37da0d7208283bf90e9a4a536e0af0ea&chksm=8b882dbbbcffa4ad2f0b8a141cc988d16bace564274018e68e5c53ee6f354f8ad56c9b98bade&scene=4#wechat_redirect",
"copyright_stat": 100,
"cover": "http://mmbiz.qpic.cn/mmbiz/MofBAcBsJ6X0xGrQ2XK5yQjzwb2eswxkRNBTgLtcqGziaFqwibzvtZAHCDkMeJU1fGZHpjoeibanPJ8rziaq68Akkg/0?wx_fmt=jpeg",
"digest": "擦亮双眼,远离谣言。",
"fileid": 505283695,
"is_multi": 1,
"multi_app_msg_item_list": [
{
"author": "",
"content": "",
"content_url": "http://mp.weixin.qq.com/s?__biz=MzA5MzEzNDg3MQ==&mid=2652767427&idx=2&sn=449ef1a874a37fed2429e14f724b56ef&chksm=8b882dbbbcffa4ade48a7932cda4263687e34fca8ea3a5a6233d2589d448b9f6130d3890ce93&scene=4#wechat_redirect",
"copyright_stat": 100,
"cover": "http://mmbiz.qpic.cn/mmbiz_png/MofBAcBsJ6XyaIn0qEDSSicBUBZbMYHYrhibia89ZnksCsUiaia2TLI1fyqjclibGa1hw3icP6oXeSpaWMjiabaghHl7yw/0?wx_fmt=png",
"digest": "12月28日,广州亚运城综合体育馆,内附购票入口~",
"fileid": 0,
"source_url": "http://wechat.show.wepiao.com/detail/ff764b0731b7465db03b56b998e1f2b8?detailReferrer=1&from=groupmessage&isappinstalled=0",
"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规则,也不需要做采集队列和跳转页面。
现在我们可以通过公众号的历史消息获取文章名单了。下一篇文章我将介绍如何根据历史新闻中的文章链接地址获取文章的具体内容。还有一些关于文章保存、封面图片、全文检索的经验。
持续更新,微信公众号文章batch采集系统建设
微信公众号文章采集入口--历史新闻页面详解
微信公众号文章页面和采集分析
提高微信公众号文章采集的效率,anyproxy的高级使用