转行做爬虫工程师好几年了,也是从什么都不懂的小菜鸡一步步走过来的,学习技术的过程很艰辛,当时在很长一段时间里都是白天上班晚上抽空学,期间走过很多弯路,也踩了不少坑。
发现很多想转爬虫的朋友似乎都是0基础或初入行的,深有同病相怜之感,所以在这里分享下自己的看法。
说到“最佳路线”,我一直认为这是个伪命题。其他行业我不懂,但对于爬虫学习来说,没有所谓的最佳路线,毕竟每个人都是独立的个体,可能对我最佳的学习方案,并不适合其他人。所以我只能给你们一个通用的方案,这个方案适合每一个零基础的朋友去学习,这也许不是“最佳”,但效果也绝对不差。
学习爬虫技术的第一步,就是先熟悉一门趁手的编程语言。一门合适的编程语言,就是写出好爬虫程序的“器”。对于没有代码基础的新手,我这里推荐Python。作为公认的编写爬虫的神器,其简单低门槛的特性,尤其适合新手入门,Python直白得像是一门自然语言,没有复杂的规则,也没有烧脑的语法,会英语就会Python。
上手爬虫的第二步,是吃透爬虫的原理。很多初学爬虫的人都表示爬虫难学,学了很久都没掌握。但其实也不然,掌握其本质与原理后,倒也容易上手。
网页爬虫,其通常由目标信息网站、页面抓取、页面分析、数据存储四个步骤组成。其爬取网站资源的细节流程如下:
* 导入两个库用于请求和网页解析
* 再请求网页获得源代码
* 初始化soup对象
* 用浏览器打开目标网页
* 定位所需要的资源的位置
* 然后分析该位置的源代码
* 找到用于定位的标签及属性
* 最后编写解析代码获得想要的资源
结合爬虫原理,多找真实案例练手,多累积实战经验,理论结合实践,爬虫学起来也很快。
如果前两个环节你已经掌握,实现起爬虫来也就游刃有余了,一般网站的数据都可以轻松爬取。但,爬取数据的过程也不总是毫无阻碍,特别是在我们爬取大型网站的数据时,经常会遇到各种使我们爬虫失效的反爬虫策略。
这时,就需要开始第三阶段的学习——网站反爬虫策略及其应对方案。
比较常见的反爬措施有:
* 目标检测出是爬虫封了IP、User-Agent、Cookie
* 目标返回了加密过的数据
* 目标返回了脏数据,无法辨认
* 目标网站必须登录才能访问
* Javascript动态渲染,爬虫无法读取
* 目标网站有验证码无法访问
* ajax异步传输,爬虫抓取到空信息
* 图片伪装与混淆+CSS偏移+SVG映射,影响爬虫爬取数据
搞不定这些问题,就无法完全掌握Python爬虫技术。这此阶段,你需要掌握包括但不限于HTTP/HTTPS、Response数据与参数加密、Web端数据Response编解码、对称加密、Web接口破解准则、JS Web调试与定位在内的一系列基础技术。
如果掌握了以上三个阶段,那恭喜你,离完全掌握爬虫技术已经很近了。第四个阶段,也是最后一个阶段,你需要掌握一些进阶技术,帮助你解决爬虫过程中面临的其他问题,让你的爬虫程序可以更快、更广泛、更全面地爬取数据。
进阶爬虫将会面临的问题:
* 目标是一款应用程序,你要如何爬取数据?
* 机器性能受限导致效率低下,你该怎样解决?
* 数据库怎样安排,怎样高效存储?
* 怎样有效的判断权重,合理分配资源?
* 怎样有效的抽取信息,避免爬到“废物”信息?
* 怎样预测目标的更新频率?
在这里我也整理了一份学习资料,主要包含爬虫入门(爬虫工作流程 http工作流程)、逆向工程、逆向算法、异步爬虫、安卓逆向这几个板块,适合Python入门的朋友学习,都是精华,有需要的话可以添加名片领取。