下面这段代码的逻辑起点是页面滑到底部ajax加载的一个链接url_initial(我是在手机微信上在浏览某个公众号的某个页面时send to Chat到自己账号,获得链接后在电脑chrome上打开; 或者可以通过关注 “My Evernote”,把链接发到Evernote的笔记里; 或者在ios平台上好像有发送到邮件的功能,也可以得到这个链接; 但是直接在浏览器中打开或者之间拷贝链接是无效的。然后在浏览器中打开链接,通过检测浏览器访问的Network->XHR找到需要的链接的)

通过观察发现这个加载功能的接口每次访问时返回10个条目,而访问时传到服务器的参数只有frommsgid是改变的,而且是上一次访问的最后一个条目的id。所以可以递归获得所有的条目。

这个加载接口的参数还有几个是和session相关的,导致只能存活20min左右,这时候需要重新通过手机微信去获得url_initial

访问接口的频率不能太快,一次循环结束需要加一句time.sleep(t)其中t>0.5时应该是安全的,否则会被临时禁止访问

单单通过这个方法获得不到阅读数和评论数,http://tool.qoofan.com/weixin/query这个网站提供了API查询阅读数和评论数(但是收费),当然也可以自己尝试着去寻找漏洞自己写API

#coding=utf-8
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
from pyquery import PyQuery as pq
import requests
import codecs
import json
import time
import datetime
def ttd(timestamp):timeStr=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(timestamp))return timeStr
f=codecs.open('/home/allen/projects/sjtu_news/data_wechat.csv','w','utf-8')
url_initial='https://mp.weixin.qq.com/mp/getmasssendmsg?__biz=MjM5MDIyMDQyMA==&uin=MjMzNTA3MjQw&key=8dcebf9e179c9f3a15be50268fa7072ea98eab64f47c243ed0a75d48addee99ee76f6585fb67fd0f15a6d32009bfe38b&f=json&frommsgid=1000000038&count=10&uin=MjMzNTA3MjQw&key=8dcebf9e179c9f3a15be50268fa7072ea98eab64f47c243ed0a75d48addee99ee76f6585fb67fd0f15a6d32009bfe38b&pass_ticket=OHlwEqWexZOnMR8LoFoVhpLM7RXg28HZhMrsoP4Rrc0%25253D&wxtoken=&x5=0'
url_head=url_initial[0:url_initial.index('frommsgid=')+len('frommsgid=')]
url_tail=url_initial[url_initial.index('&count='):]
headers = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/600.5.17 (KHTML, like Gecko) Version/8.0.5 Safari/600.5.17"}
def run(url_initial):page=requests.get(url_initial)page.encoding='utf-8'page_json=json.loads(page.text)general_msg_list=page_json['general_msg_list']general_msg_list=json.loads(general_msg_list)lists=general_msg_list['list']# print lists[0]['app_msg_ext_info']['multi_app_msg_item_list'][0]['title']last_id=general_msg_list['list'][9]['comm_msg_info']['id']# main_title=[general_msg_list['list'][i]['app_msg_ext_info']['title'] for i in range(10)]main_title=[]for i in range(10):try:main_title.append(general_msg_list['list'][i]['app_msg_ext_info']['title'])except:main_title.append(general_msg_list['list'][i]['comm_msg_info']['content'])datetime=[general_msg_list['list'][i]['comm_msg_info']['datetime'] for i in range(10)]for i in range(10):try:multi_msg=[general_msg_list['list'][i]['app_msg_ext_info']['multi_app_msg_item_list'] for i in range(10)]except:multi_msg=[]i=0for j in multi_msg:f.write(str(ttd(datetime[i]))+'\t')f.write(main_title[i]+'\t')i=i+1for k in j:f.write(k['title']+'\t')f.write('\n')return last_idfor i in range(1000):rv=run(url_initial)print rvtime.sleep(2)url_initial=url_head+str(rv)+url_tail# print url_initial

github地址:
https://github.com/wkl7123/CrawlerForWechat

微信公众号所有历史文章的标题/点赞数/阅读数统计相关推荐

  1. python爬虫实战-爬取微信公众号所有历史文章 - (00) 概述

    http://efonfighting.imwork.net 欢迎关注微信公众号"一番码客"获取免费下载服务与源码,并及时接收最新文章推送. 最近几年随着人工智能和大数据的兴起,p ...

  2. 如何在微信公众号添加“历史文章”按钮

    微信公众号作为一个面向大众的超级媒介,受众面非常之广泛,并且门槛也不高,很多业余爱好者将微信公众号作为一个自媒体来苦心经营,发布各种各样的有价值的文章.为了方便读者对往期的阅读,在公众号里面设置一个& ...

  3. C# 微信公众号导出历史文章

    老婆公司的需求,公司给了一个星期的时间.让她每天去复制粘贴.然后就有了如下代码: 先说实现吧 一.抓包 Charles  https://www.charlesproxy.com/ 打开Charles ...

  4. 如何将微信公众号上的文章下载下来?

    我最近发现微信公众号发布的的文章里边,有很多不错的图片,想要保存下来,可你习惯性的点击"图片另存为",发现有些图片的格式不是jpg格式,很难保存下来,选择截图又不是很清楚,那么该怎 ...

  5. 大数据信息资料采集:武志红公众号心理学历史文章采集评论搜集

    大数据信息资料采集:武志红公众号心理学历史文章采集评论搜集 公众号历史文章评论内容采集,导出表格格式. 采集到的内容包含:文章标题,发布时间,所属栏目,评论ID,评论内容,该评论得到的点赞数,号主评论 ...

  6. 为什么我不在微信公众号上写文章

    作者: 陈浩 原文: https://coolshell.cn/articles/17391.html 很多朋友问我为什么不在微信公众号上写文章.我都没有直接回答,老实说,我也是扭扭捏捏的,才去开了个 ...

  7. php 公众号发表文章,微信公众号如何发布文章最基本教程

    微信公众号如何发布文章最基本教程 阅读量:20016 发布时间:2019-07-22 17:20 现今随着微信的占有量和功能的增多,越来越多的小伙伴都在微信公众平台注册了属于自己的微信公账号,在微信公 ...

  8. 微信公众号中的文章如何使用朗读大师进行朗读?

    微信公众号中的文章小说新闻,都可以用朗读大师app进行朗读,下面介绍使用方法: 一,保证手机上已经安装最新的朗读大师app 没有安装的可以点击这里下载 或者最新版本 二,具体操作方法 打开微信公众号中 ...

  9. 《微信公众号-腾讯问卷》03-查看问卷答题结果统计

    <微信公众号-腾讯问卷>03-查看问卷答题结果统计 一.点开需要调查的问卷,选择在线统计 二.点开后可以看到统计结果

最新文章

  1. C++:while(getline())函数
  2. Linux环境编程--fflush(stdout)有什么作用
  3. 动态DNS——本质上是IP变化,将任意变换的IP地址绑定给一个固定的二级域名。不管这个线路的IP地址怎样变化,因特网用户还是可以使用这个固定的域名 这样看的话,p2p可以用哇...
  4. jsp页面点击显示影藏div的一个方法
  5. Java JSP EL
  6. checkbox是否被选中
  7. 微信小程序-icon图标
  8. elastic APM 简单使用
  9. 百度智能云 x 掌通家园 | 用科技点亮“家园共育”
  10. Word里面文字怎么修改字体
  11. PTA 空心的数字金字塔
  12. 网上关于画板子用什么软件的讨论
  13. Flow公链 |FCL1.0正式上线
  14. Github Student Developer Pack申请流程【不在学校的认证方法】
  15. Excel操作:使用offset函数让数据透视表动态更新
  16. android 电话解析
  17. 毕设 JAVA JSP家庭理财论文
  18. 机原自检——第8章 连杆机构及其设计
  19. Smartcard中PPS数据交换分析
  20. 会计人员不得不看的备忘录

热门文章

  1. html每行自动向上滑动,用HTML5+CSS3实现上下滑动的箭头
  2. mysql修改初始密码
  3. 【计算机二级Python】模拟试卷第3套选择题
  4. 2022年有哪些平价好用蓝牙耳机?口碑好的国产蓝牙耳机盘点
  5. html引入动态资源,云风的 BLOG
  6. 飞机大战C语言代码百度云,C语言代码实现飞机大战
  7. 前后端数据交互方法和原理
  8. 全球最大食品公司之一玛氏联手菜鸟升级巧克力供应链
  9. 华为snmpv3配置
  10. Flask 框架 - 模板 - 2