很多领域都需要数据说话,整个数据收集过程也是对思维方式的考验。本文作者介绍了自己作为爬行动物的经历,也讲述了自己是如何通过改变思维让整个过程变得更加顺畅的。
说明:我不是技术人员,整个过程不涉及任何肯定需要技术的东西。

但是,非技术人员捕捉数据不是更有趣吗?
前几天,在看《哔哩哔哩》的时候,我突然想到,我能不能抓取数据并进行分析?
我曾经抓取哔哩哔哩情景喜剧的数据来建立一个情景喜剧列表。这次是投稿,比爬一个简单的静态页面还难。
第一,精益思维,第二桌面
看着电脑屏幕,我遇到了第一个困难:爬虫中的很多步骤非常耗费资源,我需要第二台电脑作为日常使用。
灵机一动,服务器可以做第二个桌面吗?正好双11各大云服务器都在做活动。云服务器除了linux系统,还有windows系统。
该不该买没用过windows的服务器?
想到精益思维,我需要一步一步验证,确定最合适的选项。
逐步更改配置,验证最适合自己的配置。从CPU核心数到内存到带宽,云服务器提供商都提供了按需使用的选项,可以在测试后立即释放服务器。
经过多次测试,我陷入了一个新的困惑:我真的需要第二台电脑吗?
这真的是一个必要的选择吗?
甚至抓取数据进行分析真的是一件有意义的事情吗?
我在整理我的收藏,还有很多文章没归档,所以把计划推迟了。值得吗?
还没开始,就引起了思想的碰撞。这将是一次有趣的经历,我决定立即行动。
此时确认需要第二台电脑,面临两个选择:是选择2核4G还是4核8G电脑。测试中我用的是2核4G,可以满足运行几个软件的要求。测试用的带宽是3-4M,过程中没有出现卡顿,说明3M绝对够用。
最终我选择了华为云机,4核8G2M。当我选择它的时候,我不知道我将面对什么。当我真正使用它的时候,我会为这个选择感到骄傲。
选择4核82M的机器,既满足了我的需求,又增加了一个月的使用寿命。腾讯云4核8G10M,155块2个月,华为云4核82M,155块3个月;
选择2M带宽。基于对服务器基本信息的了解,服务器的带宽限制是上行,不是下行,与日常家庭网络完全相反,个人使用主要使用下行带宽;
这次选择服务器的经历也完善了一个基本原则:不要做不必要的选择,如果做了,需要避免未知的考虑造成的过多冗余。
第二,开始抓取、研究工具
我用了一个简单的抓取工具Octopus,但是只做了最基本的页面元素抓取。哔哩哔哩的贡献页面不是一个简单的静态页面。
为了避免意外,我开始全面研究八达通的基本信息,尤其是与功能限制相关的信息,准备升级到付费版本,将可导出数据量从1万增加到10万;
经过权衡,判断不需要升级。要导出10万级的数据,要花很多时间去收集。我不准备花这么长时间;
在了解服务器桌面和家庭桌面的区别时,发现a站集合两端是一致的,而哔哩哔哩集合中家庭桌面占主导地位。我做出了充分发挥各自优势的选择:在本地运行哔哩哔哩采集任务,在服务器端运行a站采集任务;
研究了一下工具信息,得知可以同时运行两个任务,但是只能同时保持一个账号在线;为了在服务器端运行程序,我注册了一个新账号,然后准备用程序的任务导出导入功能把两个账号连接起来;
本地测试结束后,导出任务,然后导入到服务器开始运行;
免费版只有10000个数据导出,这就决定了这将是一个数据严重不足的集合。为了减轻这个问题的影响,在生成链接的时候,我用了随机数,用随机数生成链接。链接生成使用Excel的基本组合公式。首先生成一组随机数,因为哔哩哔哩a站的链接都是基于数字的,比如哔哩哔哩的AV号,a站的AC号
后链接生成后,需要导入审核工具进行监控。review工具用于检查生成的链接是否可以打开,如果不能打开的链接无法收集,则收集会报错。
为了加快检测速度,需要并行使用多个审查工具。我找到了一个多重打开的工具,它在后面发挥了更大的作用,帮助我快速审核了哔哩哔哩的100万个链接。
这时,我开始了测试。为了迎接大量环节的到来,我需要对采集流程进行初步优化。
验证优化首先,你不需要很多环节,你只需要两个环节。这一步是为了保证收集数据的正确性。数据收集的慢也没关系。数据必须是你需要的。
很难收集哔哩哔哩。哔哩哔哩的评论不是同步加载的,需要等待数据出现后才能加载评论数量,限制了采集速度。
经过几轮优化,哔哩哔哩的数据增加了清晰度的选择,可以让我知道视频的平均清晰度。为了研究投稿人粉丝对其他数据的影响,增加了投稿人粉丝的采集。
复习完链接后,我把链接同时分成了两个任务。

又发生了一起事故。一些数据收集后,会被中断。必须采用更精确的采集方法来解决问题,保证采集速度。等待时间和判断条件需要重新设置。
我注意到了工具使用中的一个问题:一边使用一边学习很难。基本上到了一个使用层面就会开始停止。在这个合集里,我想避免这个问题,边用边磨刀。
有几次我真的很想放弃,开始觉得自己解决不了问题。但是随着对工具功能和问题可能原因的研究,所有问题最终都解决了。
在这个过程中,我告诉自己:相信逻辑带来的精准,不要期待概率的宽容;解决问题要理清逻辑,对症下药。不要胡乱尝试,不要凭空产生美好的幻想。
随着流程的优化,采集速度也变得更快。我在实践中贯彻了变强的理念,每一次错误都是再次进化的机会。最后,哔哩哔哩的采集速度从每分钟两次增加到每分钟四次,a站的采集速度从每分钟13次增加到20次。
边优化边运行导致了一个新的情况:一个旧的任务在运行,一个新的优化的任务在运行。老流程没问题,就是慢,新流程经过测试没问题。这样更快。
老任务已经抢了2000多次了。停了就得再抢。这就变成了一道数学题:A领先B 2000米,A每分钟跑2米,B每分钟跑4米。问:B要多久才能追上A?
答案是1000分钟后,A跑2000米,B跑4000米。如果总里程为8000米,则应立即停止A和B的过程。如果总里程为3000米,则两项任务要同时进行。
然而,第一次做出的选择通常不是最好的选择。最好的选择是停止旧任务,导出收集的数据,删除收集的链接,在新任务中只收集未收集的链接。
第三,转变思维,导入数据库。
导出数据后,我有了第一个真正的数据表。我该怎么处理这些数据?你需要可视化数据吗?
由于缺乏数据分析的基础经验,我开始迷茫。
几天前,我偶然发现了一个新的可视化工具。我当时试过,但是没用。再次打开,准备解决最后一个问题:数据库连接不成功;修改了服务器的发布端口后,问题解决了。
但是这个工具只能从数据库中获取数据,不能提交excel格式的数据。我手里有Excel。
当我准备抛弃工具的时候,我改变了主意,想出了一个解决方案:把excel导入mysql就可以了。
经过搜索,发现phpmyadmin可以导入csv格式的数据。将excel格式保存为csv后,导入数据库。
这是我第一次使用phpmyadmin并在数据库中建立一个表。我遇到了很多尴尬。在excel中按照列的顺序确认了表格的字段和属性后,我提交成功,数据导入成功。
然后我惊喜地发现phpmyadmin附带了一个基本的可视化工具:
但是,如果有可视化工具呢?数据根本用不上,所以没有任何结构和逻辑。这不是有意义的数据。
我需要的不是工具,而是可以使用工具的数据逻辑;首先要做的是整理数据的基本逻辑,然后找到合适的工具,这应该是逻辑的延伸。
第四,回归数据,边收集边研究。
话说回来,一定要去外面找工具吗?不能出类拔萃?
回到excel,再看看这些乱七八糟的数据。怎么才能理清?
我需要一个突破口,那么用什么做突破口呢?
我想到了用户分层的概念,数据也可以用这个概念分层;要分层,您需要一个基准维度。应该选择哪个维度来初始化数据?
我选择了播放量,然后按照播放量把数据分了十几类,数据就开始清晰生动了。
这个时候,我按照分类的过程总结了一句话:不做有意义的分类,就不能做有意义的洞察。
播放量本身就是一个基本指标,单独观察没有意义。将其与其他数据指标结合,可以形成许多有意义的新数据指标。
我整理了数据,这些数据变成了有用的数据:
我开始数数,计算。在这个过程中,我全面使用了自动思维:所有需要手动重复两次的操作,都会自动实现。
自动化顺利实现,直到出现了新的情况:为了计算平均值,需要生成一堆公式,但是公式一旦生成,就会立即生效,根本无法复制和使用。
在各种尝试中,不断报告错误:
这个错误窗口一直弹出,但是启发了我:是不是可以生成一个错误的公式让它不生效,生成后复制到相应的位置,然后批量修改成正确的公式让它生效。

经过测试,在所有公式前加一个字符使其无效是可行的。
复制后,获得了第一个数据:
这个故事告诉我两件事:
错误本身就是信息;不缺意外,但只要你冷静应对,不要轻易放弃,不要局限于现有的知识和经验,一定会找到解决的办法。为了观察播放量和各种数据的关系,我建立了几个新的数据指标:播放量/弹幕、播放量/评论等。这些组合指示符指示有多少分子指示符对应于分母指示符;
数据显示:平均301次播放对应一个弹幕,136次播放对应一个赞,300次播放对应一个币,171次播放对应一个收藏,232次播放对应一个评论。
根据对应关系,可以判断获取的难度为:赞


