网站调用新浪微博内容(微博爬虫,单机每日千万级的数据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万+
本爬虫系统目前稳定运行
于是最初的目标就实现了,一个千万级别的微博爬虫系统
总结
至此,可以说微博爬虫的所有问题都彻底解决了!!!
开源代码在这里,需要添加自己的账户池。