一次即兴的爬虫经历A站B站数据分析实战

北京哪里可以治疗白癜风 https://wapjbk.39.net/yiyuanzaixian/bjzkbdfyy/

在很多领域都需要用数据来说话,整个数据的采集过程也是对思维方式的一次考验。本篇文章作者介绍了自己的一次爬虫经历,其中也讲述了自己是如何通过转换思维的方式使得整个过程更加流畅。

说明:我不是技术人员,整个过程并没有涉及到一定需要技术的地方。

不过,非技术人员去抓取数据,岂不是更有意思的一件事情?

前几天,在看B站时,突然想,是不是可以抓取数据分析一下?

曾抓取过B站番剧的数据,用于建立一个番剧排行榜,这次是投稿,难度比抓取简单的静态页面要大。

一、精益思维,第二桌面

看着电脑屏幕,遇到了第一个困难:爬虫中很多步骤很耗费资源,笔记本日常要用,我需要第二台电脑。

灵机一动,服务器是不是可以做第二个桌面呢?刚好双11各大云服务器商都在做活动,云服务器除了linux系统外,还有windows系统。

没有用过windows系统的服务器,是否该买一个呢?

想到了精益思维,我需要逐步验证来确定最适合的选项。

一步步的改变配置,来验证最适合自己的配置,从CPU核心数到内存到带宽,云服务器商都提供了按需使用的选项,可以在测试后立刻释放服务器。

在进行了多次测试后,我陷入了一个新的困惑之中:真的需要第二台电脑吗?

这真的是一个必要的选择吗?

甚至爬取数据进行分析真的是一个有意义的事情吗?

我正在整理收藏,还有大量的文章没有归档,因此耽误了计划,是否值得?

还没有开始,就已经引发思维碰撞了,这一定会是一次有趣的经历,我决定立刻行动。

此时,确认了需要第二台电脑,我面临两个选择:是选2核心4G还是选4核心8G的机子,在测试中,我使用的是2核心4G,是可以满足运行几个软件的需求的,测试中使用的带宽是3-4M,过程中并未出现卡顿情形,这说明3M绝对足够;

最终选择了4核8G2M的华为云机器,选择时,还不知道我将面临什么,在真正使用时,我将为这个选择骄傲。

选择4核8G2M的机子,在满足了我的需求的同时,也多了一个月的使用期限,腾讯云4核心8G10M,块2个月,华为云4核心8G2M,块3个月;

选择2M带宽,基于对服务器基本信息的了解,服务器带宽限制是上行,而不是下行,这跟日常使用的家庭网络完全相反,个人使用则主要使用下行带宽;

这次选择服务器的经历,也让一个基本原则得以完善:不做非必要的选择,如果做出了选择,则需避免过度为未知考虑造成过度冗余。

二、开始抓取,研究工具

曾用过一个简单的抓取工具八爪鱼,但只做过最基本的页面元素抓取,B站投稿页面并不是简单的静态页面;

为了避免出现意外,我开始全面研究八爪鱼的基本信息,尤其是跟功能限制有关的信息,准备升级为收费版,以便增加可导出的数据量,从1万增加到10万;

在权衡后,判断不需要升级,要导出10万级别的数据量,采集所需要的时间会很大,我并没有准备花费如此长的时间;

在了解服务器端桌面与家庭桌面的区别时,发现A站采集两端一致,B站采集则家庭桌面占优;我做出了发挥各自优点的选择:本地运行B站采集任务,服务器端运行A站采集任务;

研究工具信息后,得知可以同时运行两个任务,但一个账号只可以同时保持一个在线;为了在服务器端运行程序,我注册了一个新的账号,然后准备使用程序的任务导出导入功能连接两个账号;

在本地测试完毕后,导出任务,然后导入到服务器端,开始运行;

免费版只有1万的数据导出量,这决定了这将是一次数据量严重不足的采集,为了缓解这个问题的影响,在生成链接时,我使用了随机数,生成带有随机数字的链接。生成链接使用的是Excel的基本的组合公式,首先生成一组随机的数字,因为B站A站链接都是以数字为基础的,比如B站的AV号、A站的AC号。

在生成后链接后,需要导入审查工具进行监测。审查工具是为了检测生成后的链接是否可以打开,不能打开的链接无法采集也会让采集报错。

为了加快检测速度,需要多个审查工具并行,我找到一个多开工具,这个工具在后面发挥了更大的作用,帮助我快速审查了B站的万链接。

这时,开始进入测试,为了迎接大批链接的到来,我需要对采集流程做初步的优化。

先行验证与优化,并不需要大量的链接,只需要两个链接即可,这一步是为了保证采集数据的正确性,采集的慢没有关系,数据一定是自己需要的。

在真正采集B站时遇到了困难,B站的评论并非是同步加载的,需要等待数据出现,才可以加载出评论数,这限制了采集速度。

在进行了多轮优化后,B站的数据增加了清晰度的选择,这可以让我了解一下视频平均清晰度,为了研究投稿者粉丝数对其他数据的影响,增加了投稿者粉丝数的采集。

链接审查完毕后,我将链接分为两个任务同时进行。

又发生了意外,采集到部分数据后,会中断,必须使用更加精准的采集方式,才能解决问题的同时保证采集速度,等待时间、判断条件都需要重新设定。

曾注意到的一个工具使用中的问题:很难做到边用边研究,基本到一个使用水平段就会开始停止,在这次采集中我要避免这个问题,我要边用刀边磨刀。

中间有几次实在是有些想放弃,开始认为自己不可能解决问题,但随着去研究工具的功能及问题可能的原因,最终所有问题都得到了解决。

在这个过程中,我告诫自己:要相信逻辑带来的精准,而不要寄望于概率的宽容;解决问题要理清逻辑对症下药,不能胡乱尝试,更不能在毫无根据的抱有美好的幻想。

采集速度也随着流程的优化而变快,我贯彻了在实践中变强的理念,每次错误都是一次再次进化的机会,最终B站的采集速度从一分钟两个增加到了四个,A站的采集速度从一分钟13个增加到了20个。

边优化边运行,导致一个新的情况出现:有一个旧的任务在运行,有一个新的优化后的任务在运行。旧流程没问题,但是比较慢,新的流程经过测试也没问题,更快。

旧的任务已经抓取了2千多个,如果停止,重新开始就要重新抓取,这变成一个数学题:A在B前米,A跑步的速度是2米每分,B跑步的速度是4米每分,问:B需要多久才能追上A?

答案是0分钟后,A又跑了米,B跑了米,假如总里程是米,应该立刻停止A,使用B的流程,假如总里程是米,就应该让两个任务同时进行。

不过,第一次做出的选择通常不是最优的选择,最优选择是停止旧的任务,将已经采集的数据导出,去除已采集的链接,在新的任务中只采集未采集的链接。

三、转换思维,导入数据库

将数据导出后,有了第一个真正的数据表,我该如何处理数据?是不是需要将数据可视化呢?

由于缺乏数据分析的基础经验,我开始陷入迷茫。

前几天,偶遇一个百度的可视化工具(


转载请注明:http://www.aierlanlan.com/rzdk/4660.html