正文
访谈与整理 / 英子
大家如果有学习过爬虫的话,想必看过一个博客叫做“静觅”,链接为:
https://cuiqingcai.com/
,上面有好多爬虫的文章,阅读量已经过百万了,这个博客的博主的名字叫崔庆才,我称呼他为“小崔”。小崔在学习爬虫的过程中记录了非常多的爬虫经验并在博客上加以分享,也收到了越来越多读者的支持。近期小崔将自己的爬虫经验写成了一本书《Python 3 网络爬虫开发实战》(人民邮电出版社,2018 年 4 月),由图灵教育推出,书上市后得到了广泛好评,现在正在火热销售中。
小崔的全名叫崔庆才,也被博客读者亲切地称为“才哥”或“大才哥”,但实际上他是一位 94 年出生的学生,目前北航硕士研究生二年级在读,现在在微软亚洲互联网工程院小冰的项目组实习,从事对话聊天、深度学习方面的研究。
小崔是从 2015 年 2 月开始学习 Python 的,最开始接触 Python 就是从爬虫领域开始学习的。当时他的启蒙老师是本科的师兄汪海洋,汪师兄的学习笔记和内容给小崔打开了一扇窗户。走进爬虫领域之后,小崔将自己的学习过程总结在博客上,那时候国内还没有系统引导大家学习爬虫的资料,在发表大约十几篇文章之后,博客访问量慢慢大起来,小崔边学习边分享,博客浏览量从每天的 200 到 1000,到 2000,到 5000,再到如今的过万。2017 年,小崔的博客集结成书。2018 年 4 月图书一上架,即成为最受读者欢迎的网络爬虫参考图书。
前两天,有幸见到小崔,跟他聊了很多。程序员圈子让人仰望的高手很多,说起来他们的经历多少有些热血,很多读者了解之后甚是羡慕,但止步于羡慕,这是因为大部分人跟这部分高手的家庭境遇和个人机遇相差十万八千里,有种不可同日而语的感觉......然而,高手中也有不少小崔这种类型的,不论是家庭出身还是学习路径,跟常人比较接近......他没有从初中或高中就接触电脑,没有父母或者亲戚高人给予人生起点的重大启发,没有某位老师说出了影响他一生的某句名言......他从大学开始学习计算机,六年下来,已经成为个中好手。
虽然,小崔的生活轨迹跟普通人差不多,但是当你跟他聊多了,你会发现他具有一个成事者的大部分特质。他是一个长性的人,做一件事儿会长时间坚持;他喜欢思考、总结与分享,利他的同时又反过来利己,形成良性循环。
那么小崔是如何在编程领域快速学习和成长的呢?今天我们就来一起看看。
崔庆才,北京航空航天大学硕士,《Python 3 网络爬虫开发实战》作者,静觅博客(https://cuiqingcai.com/)博主,爬虫博文访问量已过百万,喜欢钻研,热爱生活,乐于分享,运营个人微信公众号“进击的Coder”。
Coding,从大学开始
Q:可以介绍一下你是为何选择计算机这个专业的吗?
A:我出生在山东潍坊的一个普通家庭,父母做小生意,平时也比较忙,对于我的学习生活,父母基本上不会干涉,学习基本上是靠自觉。在高中的时候成绩基本上能稳定在班里前三名,但同很多人一样,高考报志愿的时候我其实并不知道自己将来要做什么。父母觉得我喜欢画画,可以报个建筑专业试试(大概父母想让我当个建筑师);而我自己由于比较喜欢电子玩具,觉得里面的电路板非常神奇,有点想报个电子工程专业;而一位在北京做 IT 的叔叔,建议我报个计算机,做编程方面的工作,以后也可以和他合作。讲真,我完全拿不准,本来还以为学了计算机以后是不是就是天天玩电脑打游戏了......不过我后来试着查了一些资料,略作比较,感觉计算机看起来很有前途的样子。于是就这样简单地选择了计算机专业,进入山东大学开启了我的大学生活。
掌握多门编程语言
大部分出于实际需求
Q:我看你的技能树挺丰富的,可以介绍下是怎样学的吗?
小崔的技能树(
静觅博客
)
A:从上大一开始我开始学习计算机基础课,当时我们学校的入门编程语言是Java,通过学习 Java 我了解了编程的基本思想,并在大一下的时候实现了一套网络黑白棋对战系统。接着在大二的时候学习了数据结构和算法,实现语言是 C++,这期间又学习了 C++ 的一些知识。在大二下学期的时候,学校里成立了一些实验室,我报名参加了其中一个 ING 实验室,里面包括 Web 前后端、安卓、iOS、美工等小组,我在实验室负责后端开发,使用的编程语言是 PHP,后来就慢慢熟悉起来了。后端接触久了,前端基本上也要一把抓,于是又自学了前端的一些知识,慢慢地前后端就都会了。在学习过程中也接了大大小小的十余个项目,同时还参加一些编程比赛,后来还独立完成了几个公司的商业网站,通过这些项目,平时零零散散学习的前后端技能得到了强化。
再往后就是学习 Python 了,
之前觉得爬虫比较有意思,用 Python 写了一点爬虫,
同时感觉 Python 语言写起来也非常简洁,后来决定就入这个坑了。写的过程中就在博客上把自己的学习心得写下来,越写越多,后来也慢慢得到了很多读者的支持,博客的浏览量也上来了,这也使得我更有动力去钻研更多的内容。在学习爬虫的过程中我也把 Python 这门编程语言用熟练了,到现在为止,做深度学习相关的项目也基本上是用 Python 了。至于 C/C++,一方面学习数据结构和算法会涉及,另一方面,我研究生面试要求必须使用 C/C++,刷过一段时间的算法题,不过现在用的就逐渐少了。另外,我的 PS 技能还可以,这个得益于我在大学特别积极地参与一些活动。大一我还加入了学生会的宣传部,那个时候有大量活动海报需要设计,大部分都让我承包了。我印象比较深刻的设计海报有山大计算机科学与技术学院母亲节贺卡、新学期学院招新海报,还有一个借鉴了《功夫熊猫》诸多元素的山大集市海报......
学习 Python爬虫
源于有意思
Q:能不能详细讲讲你当时为什么学习爬虫呢?
A:我是 2015 年 2 月才开始学习 Python 和爬虫的。那时候,某一天我偶然接触了学长汪海洋在 CSDN 上写的爬虫文章,感觉非常有意思,于是就照着这些文章开始学。由于爬虫比较容易上手,而且一个个项目不大,很快就可以完成一个个小的案例。每完成一个,自己就觉得非常有成就感,我对爬虫的兴趣也愈加浓厚,但那个时候网上基本上没有系统学习爬虫的中文资料。于是,我开始在 GitHub 上搜索爬虫相关的热门项目,很多时候,学习一个项目会带出作者推荐的很多其他资料,我再去把这些资料也学完。学习这些项目阅读的都是英文资料,为了日后自己复习方便,我就边学习边记录在自己的博客上,其中有些内容是直接将优秀的资料翻译过来,有些是自己的总结和感悟。另外,学习过程中,我遇到了不少难题,找不到答案,就去 Stack Overflow 上搜索,这样我也会将多个人的解决方案尝试总结,然后系统整理成文章。
没写几篇我就发现这种方式太好了,我以前学习东西偏向记笔记,但是记笔记比较随性,个人的经验和总结很少,而写博客是系统地整理,知识变得非常有逻辑,不仅可以供自己查看,还可以供他人学习。日后,将内容整理归纳到博客上就成为我学习过程的一个必备步骤。2015 年上半年我还需要去上课,下半年开始就没太有课程了,大三暑假我已经获得了保研读北航的机会,大四的毕业压力也比较小,因此我得以集中精力学习 Python 和爬虫知识,正好毕业设计也是分布式爬虫相关的内容,我也逐渐地对爬虫有了更加深入的了解。
初次见到自己写的书
(2018 年 4 月,在印刷厂)
如果对某些数据感兴趣
你就爬一爬
Q:你感觉爬虫可以做哪些有意思的事情?
A:爬虫可以做的有意思的事情太多啦,在刚开始学爬虫的时候,我爬过我们学院所有学生的信息,那时候,我很好的一位哥们儿很中意隔壁系一位女孩子,找我问能不能黑到这位妹子的信息......可见,当初爬这些信息,完全是因为一颗少年心......遗憾的是,最后我那个好哥们虽然联系上了妹子,可发现人家已经有男朋友了。另外在大学里还写过另外一个印象比较深的算是爬虫的东西,我们学院虽然有免费WiFi,但是总是每隔一小时就自动断开,当时觉得实在心累,于是写了个爬虫,定时检测是否断线,如果断线了就重新登录,世界一下子变明朗了。后来这个程序也传给了下一级的学弟学妹们用,给他们也带来不少便利,感觉还是挺开心的...
至于我现在和之前做的项目,都有涉及爬取大规模数据,比如爬取社交信息用作舆情监控,爬取评论信息用作对话聊天研究等等。
学习爬虫之初
完全没想到爬虫会这么火
Q:你当时学爬虫的时候,有没有想到爬虫会变得这么火?
A:没有,完全没有,当时学爬虫纯粹就是个人兴趣。前面提到,我刚学习爬虫的时候并没有那么多资料,一起学习的人也相对较少,还是兴趣第一,另外读者们对我的反馈也让我有继续学下去的动力。后来学着学着发现,爬虫技术开始变得流行起来,这也是得益于大数据时代的到来,人工智能的兴起,这是我当初学习的时候完全没有预料到的。
掌握爬虫技术
是为了更好地利用
Q:你自己对爬虫的定位是怎样的?
A:在我个人看来,现在属于数据的时代,人工智能和机器学习是未来的趋势。不论是工程领域还是研究领域,数据已经成为必不可少的一部分,而数据的获取很大程度上依赖于爬虫的爬取,所以学习爬虫是对数据有基本获取需求的工程师必须应该掌握的。但是,爬虫只是一种工具和手段,我们不可能只学会爬虫就万事大吉了,单纯爬一些数据而不去利用是没有价值的。数据处理、数据分析、数据可视化、模型训练等前序和后续工作同样非常重要,如果我们能更好地利用这些爬下来的数据,创造出更有意义和价值的东西那才是最可贵的。会了爬虫,我们不必为了获取数据而犯愁;而不会爬虫,我们就少了一种绝佳的获取数据的途径,爬虫可以不必完全精通,但至少不要让不会爬虫成为获取数据的绊脚石。当然,很多公司也会有专门负责爬虫的工程师,这就真的需要精通爬虫的方方面面,实现高效的数据抓取方案了,这种要求会更高,但作为本职工作,也是必须要做好的。我建议,如果还有余力,多学习一些网络安全、数据分析、人工智能方面的知识,毕竟技多不压身,有了爬虫技术,再有了这些技能,一定是只有好处没有坏处的。
小崔在 3D 画展,摄于 2015 年
有些比较高阶的爬虫技能
书里没写到
Q:你觉得在你的爬虫书里面有哪些爬虫技能没有提到呢?
A:《Python 3 网络爬虫开发实战》是一本比较全面的爬虫入门书,里面的内容以初学者视角来展示学习爬虫需要的所有技能。但由于定位和篇幅所限,书里还有很多未涉及的知识。比如异步协程的深入讲解,比如更加高级的 APP 的爬取,涉及逆向、渗透、操作系统改写等,还有关于深度学习和智能化爬虫的部分,这些现在我也正在研究,另外还有一些企业级的最佳实践部分也可以完善一下。这些高级爬取知识,如果有机会,我会在升级版或者单独出版一本类似于 《Python 3 网络爬虫进阶实战》的书,再详细阐述一下。
编程之外
爱生活,爱艺术,爱摄影
Q:除了编程之外,你还有什么其他的兴趣爱好吗?
A:我初中、高中和大学时代都是普通的学生生活,从小父母没有强制我学习什么,如果我对哪种东西产生了兴趣,父母也不会限制,总之是有充分的自由。课余时间,我自己也发掘不少兴趣爱好,比如书法、画画和悠悠球。小时候我就开始看《火影忍者》,会比着里面的人物形象画下来,有简笔、彩铅、素描等各种类型,有时候一张画画好几天也乐此不疲。另外,我也非常喜欢毛笔书法,觉得充满了艺术和文化气息,以后说不定养老的时候写写也是非常不错的,哈哈哈。大学时代,我又喜欢上了摄影,自己攒钱买了一架单反,出游的时候去拍一些好看的照片。我还非常喜欢悠悠球,是小时候看一部叫做《火力少年王》的少儿电视剧而喜欢上的。每一集片尾花絮会有悠悠球花式教学,每一个花式我都跟着学下来了。大学有一年我参加才艺表演大赛,表演的就是悠悠球,还得了一等奖,非常开心。
这些兴趣和爱好,至今我都没有完全放弃,比如,敲代码敲累了还会写上几笔毛笔字,或者画一幅画,或者耍一会儿悠悠球。
火隐忍者彩铅画
除了编程,生活中还有非常非常多有趣的事情等待着我们的发掘,让我们一起去发现生活中的美好吧!
小崔的一幅毛笔字作品
如果你刚开始学习编程
分享我的一点儿经验