阿里云服务器免费领卷啦。

捡代码论坛-最全的游戏源码下载技术网站!

 找回密码
 立 即 注 册

QQ登录

只需一步,快速开始

搜索
关于源码区的附件失效或欺骗帖, 处理办法
查看: 4490|回复: 0

如何优雅的抓取微信公众号历史文章

[复制链接]

4212

主题

210

回帖

12万

积分

管理员

管理员

Rank: 9Rank: 9Rank: 9

积分
126801
QQ
发表于 2017-4-12 10:20:54 | 显示全部楼层 |阅读模式

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

背景#

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

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

  • 这个 key 有时效,差不多是两小时。
  • key 不通用,每个公众号必须单独生成。

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

  • 抓取搜狗微信。
  • 利用“中间人攻击”思路使用代理抓取。
抓取搜狗微信#

这个好理解,就是抓 http://weixin.sogou.com/ 网站的数据。具体代码请参考:https://github.com/iberryful/weixin_sogou 代码是 Python 写的。

优点:#
  • 简单容易上手。
  • 可以批量获取帐号。
  • 所有爬取行为可以在服务器搞定,不需要依赖客户端。
  • 可以随时获取到哪些公众账号有更新。
缺点:#
  • 搜狗微信反爬虫已经做得很复杂了,经常发现代码不能用了,或者跳到验证码的界面(我看到过一个开源项目,有人购买打码服务,在出现验证码的时候,直接调用打码接口,接口很便宜,这是一个思路)。
  • 抓取到的链接是临时链接,需要跳转一下才能获取到永久链接。
  • 只能获取到公众号最新10次推送文章,无法获取到历史记录。

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

使用代理和客户端抓取#优点#
  • 可以抓取所有文章。
  • 可以任何帐号之间跳转(PC 端和 Mac 端需要一些技巧)。
  • 可以抓取文章的留言。
  • 可以抓取文章的赞赏情况。
  • 可以抓取文章的阅读数,点赞数等。
  • 稳定性有保障,因为其实我们没有做任何违规操作。
缺点#
  • 需要客户端,这和直接在服务器爬取最大的区别。
  • 因为需要客户端,效率就比较低,平均一台客户端一秒钟最多抓取10篇文章,再快了容易出现请求太快的问题。
  • 自动抓取得过程中,偶尔会出现一些问题导致抓取停止,不过这也是我们需要处理的问题。
  • 无法得知哪个公众号有更新,所以只能使用轮询的方法来做(这里可以结合搜狗微信)。
如何自动多帐号抓取#

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

手机客户端或模拟器:#
具体的做法就是每次请求历史记录列表的时候,修改 html 添加一段跳转的 JavaScript,这个要跳转的 JavaScript 你可以在后端生成,因为是后端生成,所以你就可以随意控制跳转到哪个公众账号,或者跳转到这个公众号的下一页。
PC客户端,Mac客户端:#
PC 端和 Mac 端有一个问题是不可以多个账号之间跳转,有人是通过自动输入的方式,每次需要跳到哪个公众账号,就在聊天对话里面输入哪个公众账号的历史记录页面,然后点击,这种方式是可行的。
代理可用工具#

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

https://github.com/sundy-li/wechat_spider

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

https://github.com/alibaba/anyproxy

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

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

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

  • 自动抓取文章列表。
  • 自动抓取文章留言、点赞数、阅读数、打赏等。
  • 项目直接提供 api,可以根据公众号获取对应公众号的历史文章记录。
  • 公众号文章的展示。

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

  1. https://laravel-china.org/articles/4269/how-to-grab-the-elegant-wechat-public-history
复制代码



捡代码论坛-最全的游戏源码下载技术网站! - 论坛版权郑重声明:
1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与捡代码论坛-最全的游戏源码下载技术网站!享有帖子相关版权
3、捡代码论坛版权,详细了解请点击。
4、本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。
5、若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。 我们不承担任何技术及版权问题,且不对任何资源负法律责任。
6、如无法链接失效或侵犯版权,请给我们来信:jiandaima@foxmail.com

回复

使用道具 举报

*滑块验证:
您需要登录后才可以回帖 登录 | 立 即 注 册

本版积分规则

技术支持
在线咨询
QQ咨询
3351529868

QQ|手机版|小黑屋|捡代码论坛-专业源码分享下载 ( 陕ICP备15015195号-1|网站地图

GMT+8, 2024-9-28 09:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表