• Fiddler微信公众号列表、浏览/查看量、评论数据抓取


    按之前的文章我们已经可以获取app及网页的https/http请求的json数据:
    https://www.cnblogs.com/i-love-python/p/11505669.html

    在此基础上可对微信公众号文章数据进行抓取。
    包括列表、浏览查看量、评论数据。(无需编码登录认证,不会封号)

    列表数据:

    列表数据获取

    列表为每个公众号历史数据入口,如图红框中的2部分。
    列表数据.png

    列表数据可通过Fiddler在微信PC客户端获取,获取的数据是json数据里面包含了文章标题,发布时间等信息。

    列表json.png
    这个列表信息是一个类似下面url的GET请求,该链接具有时效性,不过我们也可以更改其中的参数在有效时间内将列表数据抓取完,从fiddler中copy你的url后只需修改参数offset 从0 开始进行以此增加10即可。

    https://mp.weixin.qq.com/mp/profile_ext?action=getmsg&uin=Mjk0NjUyMDAxOA==&key=cc53f48e7cf7aa7ee97e6502e364529020d90d2dd6007000ab49617cc3fa2ad66ae709dd9b97b832411c03c6ed45b7670ca505fef6db4e9dd5bb89561a91086559ca9af84d45c0a282b8b6f1c5e25de3&pass_ticket=y5W0nBEs90w2+Q4IBMmR9Ac+nUr7wU3n2gnY4HozBUJaTy1pIPxM2Lpz60Bhv3Fe&username=&useraction=9&t=0.35340455407091587&scene=124&__biz=MzI5MTE1MTAxNg==&is_ok=1&fromplatform=2&f=json&offset=0&count=10
    

    列表数据解析

    json数据 general_msg_list的值为字符串 这是可通过json.loads()转换 得到的list即为列表数据。
    数据中最重要的四个字段如下:
    datetime:文章发布时间的时间戳
    fakeid:公众号的fakeid 可对应到属于哪个公众号
    title:文章的标题
    content_url:正文的永久url链接(该GET链接不会失效可通过浏览器打开)
    列表json.png

    正文数据

    正文内容数据的获取比较简单,浏览器打开上面的content_url永久链接,所以可通过网页爬虫系统进行解析,requests打开获取里面文本P标签也可。

    浏览查看量、评论内容:

    浏览查看量及评论的内容在手机端进行抓取。从列表页点击到正文页时fiddler中可以获取浏览量及评论内容对应的json请求。
    历史数据很多我们不可能人工每个数据进行点击,这时我们就可以使用按键精灵这种第三方软件模拟点击
    2个请求连接如下,具有时效性。

    浏览、在看量POST请求:
    https://mp.weixin.qq.com/mp/getappmsgext?f=json&mock=&uin=Mjk0NjUyMDAxOA%253D%253D&key=bd7df0327aba25f5efd11ee483618f49fbf2877dae17100330b8e7505b4f4edb069a00887127db8b641c3b9d58138c4080ae90056915673989c85037d943ccdaef473572b5a74a6d1ebc4cdacd8fcc03&pass_ticket=y5W0nBEs90w2%25252BQ4IBMmR9Ac%25252BnUr7wU3n2gnY4HozBUJaTy1pIPxM2Lpz60Bhv3Fe&wxtoken=777&devicetype=Windows%26nbsp%3B7&clientversion=62070141&__biz=MzI5MTE1MTAxNg%3D%3D&appmsg_token=1030_80FpOzQ4N34ooINO01C5KuGfD4amgFIQ_iZa6sKOTQroJYHuCZGQsMA-PJafRSuDFd4Vj89fkAJZ4F3Y&x5=0&f=json
    
    
    评论内容GET:
    https://mp.weixin.qq.com/mp/appmsg_comment?action=getcomment&scene=0&__biz=MzI5MTE1MTAxNg==&appmsgid=2650402689&idx=1&comment_id=1029375583785992192&offset=0&limit=100&uin=Mjk0NjUyMDAxOA%253D%253D&key=bd7df0327aba25f5efd11ee483618f49fbf2877dae17100330b8e7505b4f4edb069a00887127db8b641c3b9d58138c4080ae90056915673989c85037d943ccdaef473572b5a74a6d1ebc4cdacd8fcc03&pass_ticket=y5W0nBEs90w2%25252BQ4IBMmR9Ac%25252BnUr7wU3n2gnY4HozBUJaTy1pIPxM2Lpz60Bhv3Fe&wxtoken=777&devicetype=Windows%26nbsp%3B7&clientversion=62070141&__biz=MzI5MTE1MTAxNg%3D%3D&appmsg_token=1030_80FpOzQ4N34ooINO01C5KuGfD4amgFIQ_iZa6sKOTQroJYHuCZGQsMA-PJafRSuDFd4Vj89fkAJZ4F3Y&x5=0&f=json
    

    浏览在看.png

    评论内容.png

    列表、正文、浏览量数据关联

    三者的数据可通过字段sn进行关联
    列表数据的sn在content_url中
    正文数据的sn在其url中
    浏览量数据sn在其请求的request body中

    和评论利用正文中的mid和评论中的appmsgid关联

    总结:

    微信公众号数据的获取需手机和pc结合进行抓取,参数很多如果单纯分析参数结构仿造请求获取数据的难度很大,并且如果一旦接口参数变换又得重新分析。
    所以利用Fiddler直接获取json数据的方式是一种简单且长久的方法,因为我们不用关心登录认证的问题 只需降低抓取频率便不会被封号。缺点:按键精灵模拟点击有时出错

  • 相关阅读:
    影响Java EE性能的十大问题
    Android APK加壳技术方案【2】
    动态实时跟踪你的java程序
    ASP.NET MVC载入页面常用方法
    JavaWeb禁用浏览器缓存
    JavaWebresponse两个流
    nslookup命令用法
    GDAL交流 QQ群
    事件(二)——Jquery事件模型
    浅谈meta标签
  • 原文地址:https://www.cnblogs.com/i-love-python/p/11674621.html
Copyright © 2020-2023  润新知