从天通苑的测试岗到爬虫开发:一个“转码”选手的技术探索与实践总结

前端搬砖侠
2026-01-06 03:04
阅读 318

作者:老张(前测试工程师,现Python后端/爬虫开发),坐标北京天通苑,月薪22k,房租3500,养了一只叫Bug的猫。


1. 那个加班到凌晨三点的夜晚,我在天通苑地铁站旁吃泡面

去年十月的一个周五晚上,我又一次在公司熬到了凌晨三点。走出写字楼时,寒风刺骨,手机电量只剩7%,打车软件显示“附近无可用车辆”。我拖着疲惫的身体走到天通苑地铁站旁边的24小时便利店,花6块钱买了一桶红烧牛肉面。

坐在塑料凳子上,一边吸溜面条一边刷知乎,看到一篇《从测试转开发,真的值得吗?》的帖子。评论区吵得不可开交,有人说“测试转开发是降维打击”,也有人吐槽“你连算法都不会,转什么转”。

我苦笑了一下。是啊,我这个干了两年功能测试、只会点点点、写写TestLink用例的人,凭什么觉得自己能转成开发?

但那一刻,我心里却异常坚定:再不转,我就要被时代甩下车了。


2. 转型的导火索:不是热爱,是生存

其实我转开发,真不是因为“热爱编程”这种高大上的理由。说白了,就是两个字:焦虑

2021年我入职这家公司,做的是传统Web系统的功能测试,月薪15k。当时觉得还不错——毕竟刚毕业没多久,在北京能有这收入,还能在天通苑租个一居室(3500块,合租主卧带独立卫生间),已经算“体面”了。

但到了2022年底,公司开始搞自动化测试,HR悄悄告诉我:“以后只会手工测试的同事,可能不会续约了。”

那天晚上我躺在床上,老婆(其实是女朋友,但我们都这么叫了)问我:“是不是最近压力很大?”

我说:“不是压力大,是怕被淘汰。你看隔壁楼那个做Java开发的老王,天天吹空调写代码,工资比我高一倍,还准时下班。”

她翻了个身,嘟囔了一句:“那你学啊。”

一句话,点醒了我。


3. 第一次技术选型:Requests vs Scrapy —— 我的爬虫初体验

说干就干。我给自己定的目标很明确:三个月内,做出一个能跑的爬虫项目,作为转岗的敲门砖。

为什么选爬虫?一是门槛相对低(至少比搞微服务、高并发简单),二是需求真实——我们部门正好有个竞品监控的需求,但没人愿意接。

于是,我开始了我的“代码人生”新篇章。

第一个问题来了:用 Requests + BeautifulSoup,还是直接上 Scrapy?

我查了很多资料,也问了几个做开发的朋友。主流观点是:

  • Requests + BS4:轻量、灵活、学习成本低,适合小规模、一次性任务。
  • Scrapy:框架完整、支持异步、内置去重、中间件、Pipeline,适合长期维护的大型项目。

我当时心想:“我一个小白,肯定选简单的啊!”于是兴冲冲地写了三天,用 Requests 抓了某招聘网站的岗位数据,存到 CSV 里,还加了个定时任务(用 crontab),自我感觉良好。

结果第二天就被现实打脸。

那天下午,组长让我“试试能不能抓全北京所有 Python 岗位,按公司规模分类”。我一运行,发现 IP 被封了,返回全是验证码。更惨的是,我写的代码没有异常重试、没有代理切换、没有数据清洗逻辑,跑一半就崩了。

晚上回家,我瘫在沙发上,看着 Bug(我家猫)一脸嫌弃地看着我,心里直冒冷汗:“完了,这玩意儿根本没法交付。”


4. 真正的实战经验:从“玩具代码”到“生产可用”

痛定思痛,我决定推倒重来,这次用 Scrapy

说实话,刚开始看 Scrapy 文档的时候,我头都大了:Item、Spider、Middleware、Pipeline、Settings……一堆概念砸过来,感觉像在背英语四级单词。

但我咬牙坚持。每天下班后学到11点,周末泡在天通苑的咖啡馆(其实是一家麦当劳,20块钱坐一天),一行一行敲代码。

关键转折点出现在第三次重构

我做了几件事:

  1. 加了动态代理池:用免费代理API + 自建验证逻辑,失败自动换IP;
  2. 实现了分布式队列:用 Redis 做请求去重和任务调度,避免重复抓取;
  3. 加了数据校验 Pipeline:过滤掉薪资模糊、公司信息缺失的垃圾数据;
  4. 写了个 Web 后台:用 Flask 搭了个简易管理界面,能查看抓取状态、导出 Excel。

最爽的是,我把日志接入了 ELK(Elasticsearch + Logstash + Kibana),终于能在 Kibana 里看到“今日成功抓取 12,843 条”的可视化图表了!

那一刻,我感觉自己像个真正的“开发者”了——虽然只是个爬虫,但它稳定、可维护、能解决问题


5. 技术选型对比:不只是工具,更是思维升级

回头来看,Requests 和 Scrapy 的选择,其实反映了两种工程思维:

维度 Requests + BS4 Scrapy
上手速度 ⭐⭐⭐⭐⭐(快) ⭐⭐(慢)
扩展性 ⭐(差,全靠自己造轮子) ⭐⭐⭐⭐⭐(插件生态丰富)
异常处理 需手动实现 内置 RetryMiddleware
并发能力 单线程 or 自己写 asyncio 原生 Twisted 异步
维护成本 初期低,后期爆炸 初期高,长期可控

我的结论是:如果你只是临时抓点数据,用 Requests 足够;但只要涉及“长期运行”“数据质量”“团队协作”,Scrapy 几乎是必选项。

后来我还尝试过用 Selenium(对付 JS 渲染页面)、Playwright(更现代的方案),甚至用过 Puppeteer(Node.js 生态)。但核心原则不变:根据场景选工具,而不是盲目追新。

有一次和开发同事聊天,他说:“你这爬虫架构,比我们有些业务系统还规范。”
我嘿嘿一笑:“那当然,我可是被现实毒打过的人。”


6. 转岗成功:从测试到开发,薪资涨了47%

今年三月,我把整个爬虫系统打包,做了个 demo 视频,发给了技术总监。

一周后,HR 找我谈话。

她说:“老张,你的项目我们看了,确实超出预期。公司打算成立一个数据采集小组,你愿不愿意转岗做开发?”

我心跳加速,但故作镇定:“那……薪资怎么算?”

她笑了笑:“base 20k,加上绩效,预估 22k 左右。”

我差点当场跳起来!从15k到22k,涨了47%,而且终于摆脱了“点点点”的标签。

回家路上,我在天通苑地铁站买了两罐啤酒,和老婆视频通话:“咱们下个月可以换个带阳台的房子了。”


7. 代码人生的真实感悟:技术不是魔法,是解决问题的工具

现在回头看,这段转型经历让我明白了几件事:

(1)不要为了“技术”而技术

很多人一上来就想学 Kafka、Docker、K8s,但其实90%的业务问题,用基础工具就能解决。先把需求搞清楚,再选工具。

(2)实战是最好的老师

看书、看视频只能让你“知道”,只有真正写代码、部署、调试、崩溃、修复,才能让你“会”。

(3)爬虫不是“灰色地带”,而是数据工程的入口

很多人觉得爬虫=违法,其实只要遵守 robots.txt、控制频率、不侵犯隐私,爬虫是合法的数据获取手段。我现在做的很多数据清洗、ETL 流程,都是从爬虫延伸出来的。

(4)转岗不是终点,而是起点

转成开发后,我才意识到自己基础有多薄弱:数据库索引不会优化、Git 分支乱成毛线、连 RESTful API 设计都写不好。真正的挑战,才刚刚开始。


8. 给想转开发的朋友一点建议

如果你也像曾经的我一样,困在测试岗,想突围:

  1. 找一个真实的业务痛点(比如我们部门的竞品监控),别自己空想项目;
  2. 先跑通最小可行版本(MVP),哪怕很丑,但能跑;
  3. 不断迭代,加入工程化思维:日志、监控、容错、文档;
  4. 主动展示成果,让领导看到你的价值;
  5. 别怕被拒绝——我第一次提转岗被拒了,但我用项目证明了自己。

9. 写在最后:天通苑的灯光,照亮了我的代码路

如今,我依然住在天通苑,房租涨到了3800,但心里踏实多了。

每天晚上十点,我关掉电脑,看着窗外远处国贸的灯火,总会想起那个吃泡面的凌晨。那时候的我,迷茫、焦虑、怀疑自己。

但现在我知道:技术这条路,没有捷径,但每一步都算数。

爬虫只是我技术探索的第一站。接下来,我想深入学习数据管道、消息队列、甚至尝试用 Rust 写高性能采集器。路还很长,但我不再害怕。

因为我知道,在北京这座巨大的城市里,只要肯动手、肯思考、肯坚持,哪怕是从天通苑出发,也能写出属于自己的代码人生。


技术分享的意义,不在于炫技,而在于帮下一个“曾经的自己”少走弯路。
如果这篇文章对你有启发,欢迎留言交流。
下次见,程序员们。

评论 0

最热最新
暂无评论
匿名用户Lv.1
0
影响力
0
文章
0
粉丝