这是几天前在公众号上发的文章,主要讨论现在微信公众号文章抓取的一般思路以及优缺点,我不会讲技术细节,但我会分享别人已经开源的项目,你可以参考代码开了解其中的细节。

背景

微信公众号历史记录只可以通过客户端查看(手机端,PC端,Mac端),网页版微信不能查看公众号历史文章,否则也没有今天这篇文章了。

具体解释就是公众号的历史文章对应的网址,必须通过客户端生成一个 key ,才能查看,而这个 key 也是有限制的,具体限制为:

这个 key 有时效,差不多是两小时。

key 不通用,每个公众号必须单独生成。

因为以上的问题,抓取公众号账户不那么容易,所以现在一般来说有两种做法。

抓取搜狗微信。

利用“中间人攻击”思路使用代理抓取。

抓取搜狗微信

优点:

简单容易上手。

可以批量获取帐号。

所有爬取行为可以在服务器搞定,不需要依赖客户端。

可以随时获取到哪些公众账号有更新。

缺点:

搜狗微信反爬虫已经做得很复杂了,经常发现代码不能用了,或者跳到验证码的界面(我看到过一个开源项目,有人购买打码服务,在出现验证码的时候,直接调用打码接口,接口很便宜,这是一个思路)。

抓取到的链接是临时链接,需要跳转一下才能获取到永久链接。

只能获取到公众号最新10次推送文章,无法获取到历史记录。

针对以上问题,如果只是随便玩玩抓一下最新文章,可以使用搜狗微信,但是如果真的是想稳定抓取,并且要更全的数据,需要使用下面的方式。

使用代理和客户端抓取

优点

可以抓取所有文章。

可以任何帐号之间跳转(PC 端和 Mac 端需要一些技巧)。

可以抓取文章的留言。

可以抓取文章的赞赏情况。

可以抓取文章的阅读数,点赞数等。

稳定性有保障,因为其实我们没有做任何违规操作。

缺点

需要客户端,这和直接在服务器爬取最大的区别。

因为需要客户端,效率就比较低,平均一台客户端一秒钟最多抓取10篇文章,再快了容易出现请求太快的问题。

自动抓取得过程中,偶尔会出现一些问题导致抓取停止,不过这也是我们需要处理的问题。

无法得知哪个公众号有更新,所以只能使用轮询的方法来做(这里可以结合搜狗微信)。

如何自动多帐号抓取

第一步:弄到你需要的帐号的biz参数。这个类似于帐号的id。

手机客户端或模拟器:

具体的做法就是每次请求历史记录列表的时候,修改 html 添加一段跳转的 JavaScript,这个要跳转的 JavaScript 你可以在后端生成,因为是后端生成,所以你就可以随意控制跳转到哪个公众账号,或者跳转到这个公众号的下一页。

PC客户端,Mac客户端:

PC 端和 Mac 端有一个问题是不可以多个账号之间跳转,有人是通过自动输入的方式,每次需要跳到哪个公众账号,就在聊天对话里面输入哪个公众账号的历史记录页面,然后点击,这种方式是可行的。

代理可用工具

有同学用 Go 写的一个开源代理,代码:

你也可以使用阿里来源的 anyproxy,修改网页数据

使用 Windows 上的 Fiddle 或者 Mac 上的 Charles 肯定也能玩,但是不如像 anyproxy 这种灵活,因为一个使用配置,一个可以编程,差距还是很大的。

用上 anyproxy 一段时间,就觉得非常强大灵活,无论从便利性、跨平台、灵活性等都要比 Fiddle 和 Charles 要好一些,所以如果你没有使用过,推荐你使用。

今天只讲了思路,关于具体的技术细节我会接下来在博客上写,并且开源出来我现在做的爬虫平台,主要使用 anyproxy 和 Laravel,配合一个客户端,主要实现了以下功能:

自动抓取文章列表。

自动抓取文章留言、点赞数、阅读数、打赏等。

项目直接提供 api,可以根据公众号获取对应公众号的历史文章记录。

公众号文章的展示。

文章转自我的公众号:查看原文

本作品采用《CC 协议》,转载必须注明作者和本文链接

写文字大部分时候是因为我希望能帮助到你,小部分时候是想做总结或做记录。我的微信是 lijinma,希望和你交朋友。

以下是我的公众账号,会分享我的学习和成长。

python爱好者社区公众号历史文章合集_如何优雅的抓取微信公众号历史文章相关推荐

  1. python爬取公众号历史文章_pythons爬虫:抓取微信公众号 历史文章(selenium+phantomjs)...

    原标题:pythons爬虫:抓取微信公众号 历史文章(selenium+phantomjs) 大数据挖掘DT数据分析 公众号: datadw 本文爬虫代码可以通过回复本公众号关键字"公众号& ...

  2. python公众号文章_Python 抓取微信公众号文章

    起因是刷微信的时候看到一篇文章,Python 抓取微信公众号文章保存成pdf,很容易搜到,就不贴出来了 先用chrome登陆微信公众号后台,先获取一下自己的cookie,复制下来就行,解析一下转换成 ...

  3. Python实现抓取微信公众号文章

    本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章. 前言 对于抓取微信公众号文章主要通过代理ip抓包进行的操作,总会出现一些问题,以下问题导致无法抓包. ...

  4. python爬虫抓取微信公众号文章(含全文图以及点赞数、在看数、阅读数)

    因工作需要写了一个微信公众号文章的爬虫程序,贴一下分享给需要的朋友. 首先是抓取文章的url链接,在反复研究之后找到的一个最简单的方法,不需要抓包工具.首先需要自己注册一个微信公众号,有微信即可绑定注 ...

  5. Python 抓取微信公众号账号信息

    搜狗微信搜索提供两种类型的关键词搜索,一种是搜索公众号文章内容,另一种是直接搜索微信公众号.通过微信公众号搜索可以获取公众号的基本信息及最近发布的10条文章,今天来抓取一下微信公众号的账号信息 爬虫 ...

  6. python简答题及答案查询公众号和软件_Python 抓取微信公众号账号信息的方法

    搜狗微信搜索提供两种类型的关键词搜索,一种是搜索公众号文章内容,另一种是直接搜索微信公众号.通过微信公众号搜索可以获取公众号的基本信息及最近发布的10条文章,今天来抓取一下微信公众号的账号信息 爬虫 ...

  7. Python项目实战:抓取微信公众号账号信息

    搜狗微信搜索提供两种类型的关键词搜索,一种是搜索公众号文章内容,另一种是直接搜索微信公众号.通过微信公众号搜索可以获取公众号的基本信息及最近发布的10条文章,今天来抓取一下微信公众号的账号信息( 爬虫 ...

  8. 记一次批量定时抓取微信公众号文章的实现

    记一次批量定时抓取微信公众号文章的实现 抓取前的说明和准备 数据的抓取 批量抓取 定时抓取 对爬虫防抓取机制的一些解决办法 最后 抓取前的说明和准备 本次抓取的选择的语言是java,本文章不会将整个工 ...

  9. java 微信文章评论点赞_使用fiddler抓取微信公众号文章的阅读数、点赞数、评论数...

    1 设置fiddler支持https 打开fiddler,在菜单栏中依次选择 [Tools]->[Options]->[HTTPS],勾上如下图的选项: 单击Actions,选择Expor ...

最新文章

  1. php的数组与字符串的转换函数整理
  2. python教程书籍-程序员大佬,给Python零基础入门书籍教程的一些建议!
  3. 34. Search for a Range
  4. Linux——进程系列知识详述(操作系统、PCB进程控制块、查看进程状态等)
  5. RvaToFileOffset 内存偏移转成文件偏移(滴水课后作业)
  6. 用c语言求解n阶线性矩阵方程组,用C语言求解N阶线性矩阵方程Axb简单解法.docx
  7. 矩阵的特征值、特征向量
  8. Android 中intent传递序列化信息(传递类)
  9. 在godaddy的空间上发布使用MySql 和 Entity Framework做的网站时遇到的Security Exception...
  10. Spring Boot EasyUI edatagrid 扩展
  11. handbrake下载太慢_handbrake使用教程
  12. jovi五子棋下载_五子棋终结者
  13. 计算机图形图像处理应用教程,计算机图形图像处理——Photoshop实用教程
  14. 基于Simulink模型的嵌入式代码生成与实际工程应用
  15. matlab单点弦截法求解,弦截法求根c语言
  16. Python脚本实现淘宝秒杀
  17. 沉梦云商城系统源码绿色版本
  18. C语言 crc32校验算法原理,CRC循环冗余校验的实现原理
  19. Elasticsearch 滞后8个小时等时区问题,一网打尽!
  20. IDE工具(42) Alibaba Cloud Toolkit 一键部署插件使用入门

热门文章

  1. IDC:紫光收购华三通信公司和惠普中国区企业业务
  2. ubuntu下安装npm
  3. Spring Boot入门7
  4. 用haXe+NME实现水果忍者的刀光效果,支持多点触摸,Flash10, Android通用
  5. JSP Mysql 实例解说_JSP+MySQL实例
  6. Aspose.words介绍
  7. 《张成功项目管理记》一软件项目管理的主要关注点
  8. react.js fetch 基于单例+轻提示(toast)的简单封装
  9. 2009年软件架构师必须了解的十个新领域
  10. 日程管理系统——UML建模