网站文章采集平台(采集微信文章和采集网站内容一样的查看方法获取到一个)

优采云 发布时间: 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>现在我们可以通过公众号的历史消息获取文章的列表,在下一篇文章我会介绍如何根据

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线