querylist采集微信公众号文章(微信文章和采集网站内容一样的方法获取到历史消息页)

优采云 发布时间: 2022-03-07 08:18

  querylist采集微信公众号文章(微信文章和采集网站内容一样的方法获取到历史消息页)

  本文章将详细讲解采集微信公众号历史消息页的使用方法。我觉得很有用,所以分享给大家作为参考。希望你看完这篇文章以后可以打赏。

  采集微信文章和采集网站一样,都需要从列表页开始。微信列表页文章是公众号查看历史新闻的页面。现在网上其他微信采集器用搜狗搜索。采集 方法虽然简单很多,但内容并不完整。所以我们还是要从最标准最全面的公众号历史新闻页面采集来。

  由于微信的限制,我们可以复制的链接不完整,无法在浏览器中打开查看内容。所以我们需要使用anyproxy来获取一个完整的微信公众号历史消息页面的链接地址。

  __biz = MjM5NDAwMTA2MA ==&UIN = NzM4MTk1ODgx&键= bf9387c4d02682e186a298a18276d8e0555e3ab51d81ca46de339e6082eb767343bef610edd80c9e1bfda66c2b62751511f7cc091a33a029709e94f0d1604e11220fc099a27b2e2d29db75cc0849d4bf&的devicetype =机器人-17&版本= 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的内容。web界面的地址是: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的规则,也不需要创建采集队列和跳转页面。

  《如何采集微信公众号历史新闻页面》文章文章分享到这里。希望以上内容能够对大家有所帮助,让大家学习到更多的知识。如果你觉得文章不错,请分享给更多人看到。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线