大年初一,我在用 Python 监控全球疫情数据。春晚的背景音是嗡嗡的杂音,我盯着屏幕上的命令行滚动,看着从各国卫生部门官网、推特账号、新闻聚合站爬下来的数字,一个个被清洗、去重、格式化。焦虑?那太轻了。是一种被未知的巨浪拍在沙滩上,手里却只有一把小铲子的窒息感。写这个脚本,不是为了预测,只是为了“看见”。看见,才能对抗那种全方位的信息失重。
数据清洗的坑比预想的多一百倍。你以为卫健委网站的数据是规整的表格?太天真了。有的是嵌在层层嵌套的 DOM 树里的动态加载 div,class 名还每天随机变。有的国家直接把 PDF 截图丢在新闻稿里,你得先 OCR 识别,再处理那些识别错的“1”和“7”。最恶心的是时间戳,北京时间、UTC、本地时间,还有那种只写“昨日新增”却不标明“昨日”是哪一天的。写正则写得我眼冒金星,感觉不是在解析数据,是在给一堆碎纸片做考古复原。多线程爬?小心 IP 被直接封到地老天荒,尤其是某些敏感地区的 API,频率限制严得像高压线,你得模拟人类滑动鼠标的延迟,还得处理那些该死的反爬虫验证码,虽然只是简单的图形拖拽,但批量处理起来就是一场噩梦。
团队里的小孩下午发微信拜年,顺带问能不能把这个监控做成个可视化 dashboard 给客户看,说“有商机”。我回了个“新年快乐”,然后盯着这句话看了十分钟。2020 年了,我还在亲手抠这些脏数据,团队等着我喂项目,现金流看着还行,但每一个子儿都沾着这种深夜的、机械的、毫无创造性的劳作。我赚的不是产品的钱,是“我能忍你所不能忍”的辛苦费。这种模式,到底是他妈的可持续,还是慢性自杀?
但当我终于把清洗好的、按国家、日期、确诊/疑似/死亡分类的数据,通过 Server 酱推送到手机通知栏的那一刻,那种感觉很奇怪。窗外的鞭炮声(今年好像少了)和手机屏幕的冷光,手里是滚烫的茶杯。世界正在被一种陌生的恐慌撕裂,社交媒体上全是情绪和谣言。而我这里,只有一行行冰冷的、可能也不完全准确的数字。它们不提供意义,不给予安慰,甚至无法指引方向。但它们“存在”。这种存在的确定性,在滔天的不确定性里,成了我唯一能抓住的浮木。技术在这个时候,剥离了所有关于流量、变现、商业模式的喧嚣,回归到它最原始的功能:延伸人的感官,在混沌中建立微小的秩序。
脚本还在后台 quietly 跑着,每隔两小时抓取一次。我知道,明天早上醒来,手机里会堆满新的通知。有些数字会跳涨,那意味着某些地方正在经历我们无法想象的夜晚。这不是安慰剂,这是清醒剂。用代码保持清醒,大概是我这个老产品经理,在这个荒诞的大年初一,能为自己做的,最像回事儿的事了。














