阅读文本大概需要 10 分钟。
从毕业时开始做爬虫到现在已经有 4 个月的时间了,这 4 个月时间里,我从最初负责编写爬虫插件的边缘业务做起,到如今负责公司爬虫主业务。4 个月时间里对爬虫的技术也有更进一步的掌握,对爬虫的行业也有了更深的认知。今天我就梳理下我学习爬虫的经历。
1 认清自己的实力
首先你一定要想明白你为什么要做爬虫,你为什么要选择爬虫这个行业。我之所以会选择爬虫这个行业,主要是结合自身的情况做出的决定。首先大学读书期间我的学习成绩非常不好,虽然我专业是计算机,但对于编程的掌握程度可以说是一个学渣。大学里一共挂了 12 门的课,每学期都会挂科,每年都要提早去学校,直到大四下学期我才把课程全部修完,才得以顺利毕业。这样的学习状态导致了我自身对于编程的技术一直停留在入门的门槛上,你叫我用 java 写个最简单的登陆页面,对不起,我不会。你叫我写个快速排序的算法,对不起,我连冒泡排序都不理解。
我大学的编程水平是非常烂的那种,但到了大三马上大四了,或多或少都会考虑以后要做什么。我也认真考虑过以后毕业的方向,那时候最火的方向是安卓,所以为了毕业不失业,我毅然的选择学安卓。但大四的时候安卓已经开始走下坡路了,即市场已经不再需要安卓初级人员。以前安卓火到什么程度?2014 到 2017 之间那时候做编程最火的方向就是移动编程,甚至在 2014 你只要会写个 hello world 的 app 就可以胜任安卓开发的工作,那时候培训机构也是铺天盖地的宣传安卓开发。
但到了大四即 2018 年,你只要稍微关注下安卓方向的消息,都会看到各大博主都在谈论「移动开发寒冬将至」。本身自己技术已经比别人落后了,移动开发市场还需要初级人员,我毕业以后拿什么和别人竞争?继续选择安卓,结果只有一个失业。
所以我必须做出选择,选择其他的技术方向,我才可能有其他出路。恰好那时候人工智能、大数据、机器学习开始初露锋芒,随之 python 这门语言水涨船高,逐渐开始被人们所关注。虽然那时候 python 逐渐火起来,但 python 的工作非常少,甚至有些 python 的工作只有一线城市才能找到,工作岗位非常少。但这说明市场竞争没有那么激烈,即很少有人会选择 python 做为职业发展道路。这就是我的机会。
我技术渣,学历普通,起初的起点已经非常低。我想要进入互联网这个行业,我就必须放低自己的眼界,从市场最薄弱的点寻找突破。爬虫就是我的突破口。
2 编程感
你说我如果技术能力强,或者说编程基础好,我会选择爬虫这个行业吗?肯定不会,我技术能力强,就单 python 方向来说,我大可选择机器学习、数据分析、人工智能等等方向,甚至编程领域最吃香的算法方向。但不好意思,我技术就是那么弱。所以只能选择未来有发展潜力,但又不热门的方向。
工作 4 个月的时间里,认识了很多专业爬虫师,有的是工作了 2 年,有的像我一样也才毕业,这其中也包括崔庆才这样的技术大牛。无不认为爬虫没有前景,最多做 4 年就会触碰到天花板,无法再精进。但这已经足够了,爬虫只是我入门砖,我一定要找到一个方向,让我进入到互联网的行业,我才有可能继续发展,如果我连入场券都没有谈何理想和现实。
所以在看这篇文章的你们,要好好想想你自身的情况,决定是否继续看下去。接下来的内容,就是细说如何学爬虫。大家可以在这停留 5 分钟,仔细想想自身的优势在哪。
做爬虫的语言有很多比如 java、node、python 等等,但因为 python 有非常丰富的库,而被爬虫所青睐,利用 python 丰富的爬虫库,可以快速完成工作上爬虫的需求。一些复杂的爬虫任务,python 也能轻松胜任,所以职业做爬虫的首先语言都是 python。
爬虫初期你的首要任务就是把 python 基础知识学好,这个阶段我是跟着菜鸟教程网站文章学习下来的。如果你本身对于编程是零基础,那么你可以跟着视频学习。但到了后期我还是建议跟着文档或者技术文章学习,这样你的学习效率才能提高。
学完 python 的技术之后,你就需要找些实际的大量项目来练习。大量具体是多少数量?十个?一百个?一千个?都不是。这里的大量是指能让你对任何编程事物都有种我都可以用代码写出来的感觉,我自己称之为编程感。
举个例子:现在有个工作需求,要你写个翻译几百万行的英文单词程序,单词的文件是 json 格式。
这个需求你的脑海里第一反应是什么?是:卧槽几百万的英文,我怎么做。还是:这个不难,我之前有做过类似的项目,应该不难。
这个需求是工作上一个同事委托我做的,刚听到这个需求的时候,我的脑海里第一反应就是这个不难,可以做。但具体怎么做我也不知道,但我知道只要我认真的去想,肯定可以做得出来。而实际也是如此,我花了 1 小时的时间就把第一版的代码写了出来。虽然我不知道怎么做,但我知道大体的方向在哪。
首先利用现有的翻译平台,借用已有的轮子,可以使你快速的完成开发需求。所以我马上去网上搜索了下「python 翻译程序」,看看都有哪些可以用的翻译平台。核心的点即如何翻译单词,通过参考别人的代码,我很快也能利用平台翻译一个英文单词。接下来我需要处理的就是如何读写 json 文件,以及如何定义好需要翻译的单词结构。这样大体的程序思路以后有了,你就可以编写代码去实现。编写的过程中你就会发现其他的一些问题,比如 json 的文件怎么只读取一行,是一个个的单词的翻译还是一行行的翻译,以及第一版本实现之后只能翻译 50 个,后面就被封了,怎么实现大量的翻译等等。
那编程感怎么培养?无他,熟尔。我学编程初期就像第一种情况一样,第一反应:做不到,没有思路。我也是通过大量的学习模仿,才一步步的拥有自己的编程感。这个过程我大概花了有两年的时间,这两年我都是在学习模仿别人现有的文章,去跟着视频慢慢的敲,去看技术文章慢慢的学,日积月累的慢慢的培养出来的。
所以大量是多少量是没有一个标准的,但只要某一天你突然发现自己对于一个编程问题有种能做出来的强烈清晰感,恭喜你,已经拥有自己的编程感了。
3 爬虫的学习
我学爬虫的时间非常短也不过两个月的时间,但我整整花了 2 年的时间,才培养出自己的编程感。拥有编程感之后,我的编程学习效率飞速提升,这就让我很快就掌握了爬虫的技术。爬虫的技术其实非常的少,尤其在看了爬虫的视频教程之后,对于爬虫的大体流程有了清晰的认知。流程就三个:1 网络请求分析,模拟请求;2 抓取数据;3 解析数据。大部分的爬虫就是这样的框架,其他的内容无非是在这里面删删改改而已。
爬虫初期就是跟着优质的视频教程来学, 那怎么寻找到某个领域优质的内容?很简单,我首先去知乎上搜索爬虫相关的话题,很容易就发现这个领域优质的资源, 比如崔庆才的爬虫教程。我初期就是跟着崔庆才的教程学习的,他的教学视频质量非常高,属于那种通俗易懂的类型,又非常全面的介绍了爬虫的知识体系。这对于初学者来说非常重要,一定找到经典的教程,这可以让你少走非常多的弯路。那份资源我也为大家准备好了,后台回复「爬虫」即可获取。
当你认真把崔庆才的视频看完之后,你就已经入门了爬虫。接下来就是实际找网站练练手,巩固自己所学的知识。这期间肯定会把一些所学的知识忘了,这是非常正常的现象。所以你可以去买本《python3 网络爬虫实战》也是崔庆才出的书,里面非常详细系统的介绍爬虫所有的技术。可以当成爬虫宝典来使用,有什么遗忘的知识随时翻出来看看。
学习视频和看书,我前前后后花了两个月的时间。随后我在为了面试的内容,进行加强的学习,准备面试用的项目,以及简历怎么写等等。
大学里我最值得骄傲的事是:培养出自己的编程感。拥有编程感之后的我飞速成长,不仅仅是编程方面,我生活其他方面也是一样。最能体现的事就是我的公众号,3 个月时间里我就从 0 突破到 1W,再突破到如今 2.6W。拥有编程感之后的我,学习其他领域的知识,总是会有种强烈的方向感,虽然我不知道怎么实现,但我知道只需要从哪个方向寻找,一步步的实现、试错、修改、重试、直至成功。
推荐阅读:
人必有痴,而后有成