先说清楚,这篇不推荐任何工具,我就是记一笔参赛。
前阵子翻硬盘,翻到一个2021年的项目文件夹,里面躺着个爬虫脚本,文件名是final_ver2_真正最终版.py。就这个名字,说句实话,我盯着看了半分钟没敢点开——能写出这种文件名的人,脑子里在想什么我现在完全没法理解。
那个脚本是当年刚转行时写的,给一家小电商公司抓竞品价格。总共就没几件事:请求、解析、存数据。我打开一看,好家伙,一个都没干利索。请求没有超时设置,没有重试,没有代理池,没有异常处理,甚至连请求头都没伪装。更离谱的是,数据是边抓边往内存里的字典塞,塞完整个pickle成文件——写到一半断了,之前抓的全废。我当时就是靠这破玩意儿交差的,现在看简直想给当年的客户磕头。
我把代码拷进AI对话框,贴之前先打了一段话:这是我的烂代码,别给我讲道理,直接重写,重写完我自己看diff。发完我就去泡咖啡了。回来AI已经把代码拆成了三个类——哦不对,我记着就一个类加两个函数,模块化得很干净。每个请求带超时、带重试,断了能续爬,进度条还给你打出来。我盯着那块代码看了很久,然后开始跑。
翻车瞬间来得很快。跑起来没两分钟,报错,cannot import name 'urlretrieve' from 'urllib.request'。我一看就明白了,2021年Python2那套写法,AI给我改的时候还惦记着兼容,结果它自己也没料到我在2026年还用着当年那套环境变量——我知道,很蠢。关键不是这个报错,是我盯着那行报错的时候,突然记起来,当年这个脚本也是在这句话附近炸的。我当时自己偷偷写了个"修复版"把urlretrieve换掉,然后没存备份,第二个版本直接把这个补丁覆盖了。这种事我干过不止一次。
AI改完的版本跑通了。速度比我预期的快,没有出错,干干净净跑完了。但说句实话,我心里没有爽,反而有点堵。我当年要是肯花一个下午好好重写一遍,后面那一堆破事——半夜爬起来修数据、被客户骂、被自己蠢哭——全都能省了。我为什么没写?不是不会,是那时候觉得"能跑就行"。
最后我把AI重写的结果存下来了,文件名起的是crawler_final_v3_真真正正最终版.py。这就是我改不掉的东西了,手里的活儿变干净了,人还是那个什么味儿。
就说到这。