分享一个使用“代理”的方式抓取微信公众账号文章,可以抓阅读数,点赞数,赞赏数和回复数,使用 anyproxy

2017-04-05 21:02:03 +08:00
 lijinma

首先,先看我写的文章,介绍现在微信公众账号可以抓取的方法:

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

这个工具是纯 node.js 代码,使用 anyproxy 做代理来抓取文章的。

安装:

$ npm install wechat_spider -g

具体安装和使用请查看 https://github.com/lijinma/wechat_spider

抓取完存储在 sqlite 中,可以导出 csv ,如图:

抓取思路:

  1. 使用中间人攻击的方式,安装根证书。
  2. 为了保证自动抓取分页,在每一页的后面添加:<script>setTimeout(function(){window.location.href="下一个 url";},2000);</script>,动态修改下一个 url ,这样就可以保证一直抓下去。

这是一个完整的工具

我尽可能的在 README 中尽可能的把每一步都写得非常清楚,希望真的可以对你有用,尤其是媒体工作者,因为我这个工具就是为我一个做媒体的朋友写的,有任何问题,请提 Issue 。

我的公众账号

11696 次点击
所在节点    Node.js
54 条回复
lijinma
2017-04-06 18:38:46 +08:00
@AlwaysBee 嗯哪, web 版本的微信文章,随便爬,没什么限制。
uglyer
2017-04-06 19:05:14 +08:00
写过一个类似的,不过抓取频率高了会被封号,不知道楼主有没有测试过一天能爬多少。
MrFireAwayH
2017-04-06 19:08:05 +08:00
@lijinma 不着急 你能帮忙已经很感谢啦~😊
AlwaysBee
2017-04-06 19:23:08 +08:00
@uglyer 我用那个 go 的版本也被封过号,当时没玩多久就被封了,才爬了几个公众号而已,所以也不知道具体的原因,好在这只是小号
uglyer
2017-04-06 19:25:10 +08:00
@AlwaysBee 养了一批号,好几台手机跑这个,出口都不同,全死光了。
lijinma
2017-04-06 20:53:07 +08:00
@uglyer
@AlwaysBee

我只抓列表抓过几十万的数据,但是阅读数和点赞数没有这么抓过。。。
hastelloy
2017-04-07 08:15:53 +08:00
@falseen 大约是公元 2016 年年底的时候这种方式失效了,貌似是加入了 ip 记录的方式防止这个,我有个 python 版的代理大法
hastelloy
2017-04-07 08:23:56 +08:00
@lijinma 直接访问下文章页不是可以得到阅读数,点赞数什么的吗,
lijinma
2017-04-07 08:49:54 +08:00
@hastelloy 当然可以,就是要批量的。
bozong
2017-04-07 13:38:12 +08:00
@mooncakejs #9 大牛
MrFireAwayH
2017-04-07 21:12:37 +08:00
目前有一个情况是如果文章带有视频的话 会有大概率无限循环某两个文章

经查发现 虽然微信页面是在两个文章之间跳转 但是并没有访问 /s?_biz 这类链接

猜测视频是用 iframe 嵌入的 因为如果把视频链接修改到别的地址的话(如百度) 播放器位置会显示相应结果 而不是整个文章页面变成百度

不确定是不是我改出问题了……

我改成了从 mysql 读文章地址再去控制客户端访问的形式
lijinma
2017-04-08 10:46:30 +08:00
@MrFireAwayH 我也遇到过,还没找到原因,循环的时候,刷新一下就可以继续下去,你能帮忙改改代码吗?

这两天有点忙。
MrFireAwayH
2017-04-10 01:10:04 +08:00
@lijinma #52 我这两天根据你的思路 自己撸了个工具出来 在 https://www.v2ex.com/t/352758

至于这个无限循环的问题,我觉得可能是微信的内置浏览器有问题,至于你说的刷新一下就解决了,是因为刷新后会重新访问 /s?_biz 链接

我目前采用了计数器的方式解决,初始化时候 FindAll 计算总数 count ,再对其翻倍处理(因为每次访问一个文章,都需会有相对固定次数的多个请求),设置 index=0 ,每个 else if 下面则 index+=1 ,在最终的 else 那边做判断,如果翻倍后的 count 小于 index ,说明进去死循环了,则强制重启。

上述办法不是很完美,还没找到更好的办法。。。
MrFireAwayH
2017-04-10 01:11:10 +08:00
@MrFireAwayH #53 额 错了 地址是 https://www.v2ex.com/t/353684

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/352758

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX