爬虫介绍
什么是数据采集
定义
就我个人而说,更喜欢说数据采集而不是”爬虫“。其实更标准的叫法是网络爬虫,在wiki上是这样定义的:
网络爬虫(英语:web crawler),也叫网络蜘蛛(spider),是一种用来自动浏览万维网的网络机器人。其目的一般为编纂网络索引。
就比如百度、谷歌,都是网络爬虫,把互联网上所有的数据采集下来,保存到自己的数据库中,并根据各种各种规则建立排名和索引,向用户提供搜索服务。大体上就是这么个意思。
分类
一般会分为两种:通用爬虫与垂直爬虫
- 通用爬虫。类似百度、谷歌这样的爬虫,抓取对象是整个互联网,对于网页没有固定的抽取规则。 对于所有网页都是一套通用的处理方法。这里可以看看我之前分享的代码 用Golang写爬虫(一)
- 垂直爬虫。这类爬虫主要针对一些特定对象、网站,有一台指定的爬取路径、数据抽取规则。对于我们大多数人来说,写的爬虫都是垂直爬虫,具体的某个网站的某个数据,比如淘宝的手机、当当上的书籍等等。
策略
网络爬虫始于一张被称作种子的统一资源地址(URL)列表。当网络爬虫访问这些URL时,它们会甄别出页面上所有的超链接,并将它们写入一张“待访列表”,即将要访问的链接。然后再次访问这些URL,提取,循环往复。
常见的爬虫爬取策略有DFS和BFS,拿一张图来说明
- 深度优先策略(DFS) 深度优先策略是指爬虫从某个URL开始,一个链接一个链接的爬取下去,直到处理完了某个链接所在的所有线路,才切换到其它的线路。 此时抓取顺序为:A -> B -> C -> D -> E -> F -> G -> H -> I -> J
- 广度优先策略(BFS) 宽度优先遍历策略的基本思路是,将新下载网页中发现的链接直接插入待抓取URL队列的末尾。也就是指网络爬虫会先抓取起始网页中链接的所有网页,然后再选择其中的一个链接网页,继续抓取在此网页中链接的所有网页。 此时抓取顺序为:A -> B -> E -> G -> H -> I -> C -> F -> J -> D
和算法中的保持一致
如何学习数据采集
在知乎上一直都有各种各样的入门文章,鱼龙混杂吧。具体的学习可以看看崔庆才的书,写的挺好的。再有把这个教程里入门章节看完,编写一般的爬虫是没问题的,想要去继续深入,可以去看看放弃章节。
其实这些方向都是差不多的,最主要还是看自己花多少时间去学习。我下班后回到家,每天都会写代码或者学新技术,一般到12点。
数据采集前景讨论
我们来看看一些数据吧。
这是从某网站上抓取的(全国所有职位),从2018年6月到2018年12月,关键词是”爬虫“、”数据采集“的职位数量,多的就不用说了吧,职位明显是在减少。我们再来看看搜索”前端“的结果是什么。
注意看纵坐标的数量,根本就不在一个级别。但是注意看整体趋势,都是在下降,估计和现在的互联网寒冬有关。
数据采集职位数量上来看要比前端方向少很多,因为每家公司都会需要前端、但并非一定要数据采集,这里没有说后端,主要是后端包含太广,Python、JAVA、GO、PHP等等都可以做,所以统计数量可能不好算。
如果你真的喜欢数据采集,那么就努力提升自己的技能,这才是最重要的。
关于爬虫学到什么程度可以找工作,可以看看我之前写的,爬虫学到什么程度可以去找工作
如果有任何疑问,请在此交流。