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

优采云 发布时间: 2021-10-15 16:09

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

  微博爬虫,单机日千万条数据&&吐血整理微博爬虫总结

  之前我发布了一个每天百万数据的博客微博爬虫,并在Github上开源了代码,然后很多人联系我,我也在公众号转载了这个文章。

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

  但既然坑已经被埋了,就必须填满!所以自从写了那篇文章,我就一直想搭建一个稳定的单机日千万条微博爬虫系统。

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

  微博站点分析

  目前共有三个微博站点,分别是

  

  

  

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

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

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

  微博高级搜索

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

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

  对于高级搜索界面,三个微博站点的条件是:

  高级搜索条目:

  

  可以看到这里可以过滤的条件是type、user、time。请注意,这里的时间以天为单位。

  下*敏*感*词*体搜索关键词,疫苗

  

  

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

  因此,搜索结果最多会返回 1,000 条微博。

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

  不幸的是,该站点没有高级搜索界面

  高级搜索条目:

  

  可以看到这里可以过滤的条件是type、user、time、region。请注意,这里的时间以小时为单位。

  

  本站每页收录20条微博,最多50页,因此单次搜索最多可返回1000条微博数据。

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

  所以例如,如果搜索周期为10天,那么最多可以抓取10*24*1000=240,000条数据。

  总结

  所以可能只需要使用高级搜索,而你需要的搜索结果数据量大,过滤条件也很详细,比如region,其他爬虫需求都可以通过本站爬取,包括比较粗略的高级搜索

  微博爬虫经验总结

  或者传统的验证码,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,是分布式爬虫系统。

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

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

  那么结果是:

  

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

  本爬虫系统目前稳定运行

  于是最初的目标就实现了,一个千万级别的微博爬虫系统

  总结

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

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

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线