网站调用新浪微博内容(微博爬虫,单机每日千万级的数据ampamp总结(图))

优采云 发布时间: 2022-01-25 12:22

  网站调用新浪微博内容(微博爬虫,单机每日千万级的数据ampamp总结(图))

  微博爬虫,单机每天千万级数据&&吐血整理微博爬虫总结

  前言

  早前我发表了一篇博客微博爬虫,每天上百万条数据,并在Github上开源了代码,后来很多人联系我,还有一些公众号转载了这个文章。

  但是,对于微博爬虫,我还是很内疚的,因为账号池的问题还没有解决,所以每天百万数据里都有水。仅仅爬取好友关系,这个简单的数据就可以达到数百万。如果你抓取关键词搜索过的微博,或者一个人的所有微博,都达不到百万级数据量。

  但既然坑已经埋了,就必须要填上!所以自从写了那篇文章之后,我就一直想打造一个稳定的单机千万级每日微博抓取系统。

  值得庆祝的是,这个问题现在已经完全解决了!对微博爬虫也有了更深的了解!

  微博网站分析

  目前共有三个微博网站:

  

  

  

  可以看出,这三个站点的复杂度在逐渐增加。很显然,如果你能爬到最简单的完成,你肯定不会爬复杂的,但实际上,有些只能爬复杂的。!

  什么任务不能完成?可以说,抢一个人的所有微博,抢朋友,抢个人信息,这一切都可以在这个网站上完成。

  但是,有一个任务是无法完成的,那就是高级搜索

  微博高级搜索

  也许你经常有这样的需求。比如最近疫苗事件的兴起,你需要抓住7月10日到7月20日这个时间段,提一下疫苗的关键词微博。

  这其实是一个非常刚性的要求,需要使用微博的高级搜索来完成。

  对于高级搜索界面,三个微博网站的情况是:

  高级搜索条目:

  

  可以看到这里可以过滤的条件有,类型,用户,时间,注意这里的时间是以天为单位的。

  以下是对 关键词 疫苗的特定搜索

  

  

  可以看到一页有10条搜索结果,最多显示100页,也就是1000条结果。

  因此,搜索结果最多会返回1000条微博,

  本站的时间单位是天,比如搜索时间段是10天,那么最多可以抓取10*1000=10000条数据。

  不幸的是,这个网站没有高级搜索界面

  高级搜索条目:

  

  可以看到这里可以过滤的条件有类型、用户、时间、地区。请注意,这里的时间以小时为单位。

  

  本站一页有20条微博,最多50页,所以一次搜索最多也能返回1000条微博数据

  但是这个网站的时间单位是小时,

  所以比如搜索时间段是10天,那么最多可以抓取10*24*1000=240000条数据。

  总结

  所以可能只需要高级搜索,而且你需要的搜索结果数据非常大,而且过滤条件非常精细,比如地区,其他爬虫需求都可以通过本站抓取,包括比较粗略的高级搜索

  微博爬取经验总结

  还是传统的验证码,5位数字和字母的组合

  

  这个验证码可以通过扫码平台来解决。具体登录代码请参考这里

  但是,由于您购买的小号可能会因为操作频繁而被微博盯上,所以登录时账号异常,会生成一个非常恶心的验证码,如下图。

  

  遇到这种情况,建议你放弃治疗,不要想着破解这个验证码,所以你平时买的小号也不是100%可用的,还有一些是异常账号!

  打造千万级爬虫系统

  基于以上分析,如果要搭建千万级爬虫系统,只需要做一件事,搭建一个账户池。

  建立账户池的步骤也很简单:

  1. 购买批量帐户

  2. 登录微博并保存cookie

  在这两个步骤中,对于每个后续请求,只需从帐户池中随机选择一个帐户即可。

  这两个站点的cookies是不同的,所以我们需要建立两个账户池,一个给cn站点,一个给com站点。

  这时候,结合我之前写的项目WeiboSpider,就可以轻松实现每日百万级数据抓取!

  注意这里的实际爬取速度与你的账户池大小和电脑带宽有很大关系。如果账户池不大,请求间隔延迟会稍微长一些。如果带宽小,每个请求的耗时也会长一点

  我的数据是

  账户池中有 230 个账户,每个请求的延迟为 0.1 秒,每天可以实现 2-300 万个获取结果。

  冲刺到千万

  一直以为我上面搭建的爬虫占用了带宽!

  有一次,我启动了另一个爬虫,发现另一个爬虫也可以达到每天2到300万的爬行速度。同时,之前的爬虫也在以每天2到300万的爬行速度运行。

  所以,只是CPU在限制爬虫的爬取量,而不是网络IO!

  所以你只需要使用多进程优化。这里推荐使用 Redis-Scrapy。所有爬虫共享一个 Redis 队列,通过 Redis 将 URL 统一分配给爬虫,Redis 是一个分布式爬虫系统。

  它可以部署在不同的机器上(如果一台机器的带宽/CPU已满),或者只是在一台机器上打开多个进程。

  就这样,开了5个进程,不敢再开多了,毕竟账户池还是200多。

  那么结果是:

  

  一分钟可抓8000条数据,一天可抓1100万+

  抓取系统目前运行稳定

  因此,最初的目标已经实现,一个千万级的微博爬虫系统

  总结

  至此,可以说微博爬虫的所有问题都彻底解决了!!!

  开源代码在这里,你需要添加自己的帐户池。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线