网站文章采集平台(采集微信文章和采集网站内容一样的查看方法获取到一个)
优采云 发布时间: 2022-02-24 21:12网站文章采集平台(采集微信文章和采集网站内容一样的查看方法获取到一个)
采集微信文章和采集网站一样,都需要从列表页开始。微信列表页文章是公众号查看历史新闻的页面。现在网上其他微信采集器用搜狗搜索。采集 方法虽然简单很多,但内容并不完整。所以我们还是要从最标准最全面的公众号历史新闻页面采集来。
由于微信的限制,我们可以复制的链接不完整,无法在浏览器中打开查看内容。因此,我们需要使用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是微信客户端的补充参数。
因此,在这个地址过期之前,我们可以通过在浏览器中查看原文来获取文章历史消息列表。如果我们想自动分析内容,我们还可以制作一个收录密钥和尚未过期的密钥的程序。提交pass_ticket的链接地址,然后可以通过例如php程序获取文章列表。
最近有朋友告诉我,他的采集目标是一个公众号。我认为没有必要使用上一篇文章文章中写的批处理采集方法。那么我们来看看历史新闻页面是如何获取文章列表的。通过分析文章列表,我们可以得到这个公众号的所有内容链接地址,然后采集内容就可以了。
在anyproxy的web界面中,如果证书配置正确,可以显示https的内容。Web 界面的地址是 localhost: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的规则,也不需要创建采集队列和跳转页面。
<p>现在我们可以通过公众号的历史消息获取文章的列表,在下一篇文章我会介绍如何根据