网络爬虫-海量数据爬取(一)爬虫的简要和技术要求

前言:

随着网络的迅速发展,互联网成为了大量信息的载体.格式化,具有标签的数据信息是具有非常大的分析意义的,然而,靠人工是完成对的海量数据的采集代价太大,所以对于结构化的数据采集,使用爬虫是一个非常高效的选择

技术储备:

可以使用爬虫的语言有很多种,但在学习爬虫前,我们需要了解以下技术

html:超文本标记语言

html又叫超文本标记语言,也是我们互联网的浏览的第一环,我们需要的结构化数据,一般都在html的层级标签上,对于html的了解,作为爬虫开发人员,最低需要能够看懂网页结构.

javaScript:动态脚本语言

javaScript一般简称为js,一般用于和页面上和用户完成交互,例如:点击,鼠标移动...,在多数情况下,我们需要的数据并不是直接展示在我们面前,有时,网站为了防止自身数据被爬取,采用的投毒(用户看到的是真实数据,然而通过审查源码形式查看的化,数据发生了改变,例如:企信宝).有的时候数据,你无法以html形式来理解,有些网站是以例如:json(ceic是这样)或者其他的形式的数据结构,通过js解析来展示,这个时候对js比较好的掌握,往往可以突破很多网站限制的难关

css:层叠样式表

css主要用来渲染页面,可能很多人认为,css与我们爬虫并不相关.其实我们爬虫也并不需要去了解怎么去渲染页面,但我们更多的是需要应用css选择器这一功能.css选择器用于解析html页面获取结构化数据是非常方便的,自己去解析html页面是一件工作量浩大的工程.所以个人认为,css选择器对于爬虫开发人员来说是必要的.

XML:可扩展标记语言(了解)

xml与html在结构上很类似,但主要用途是用于以结构化的形式保存数据,

Json:JS 对象简谱

json并不是一种语言,而是一种数据结构,同时js可以直接通过方法将json字符串转换为js对象,js对象也是以json格式来定义,而且后端语言也经常讲json字符串转换为对应的对象.所以理解json是爬虫的基础.

抓数据包

现在而言,往往一个html页面是非常的庞大,而且每个公司的前端使用的技术也不尽相同,如果单单靠硬读网页源代码是一件非常痛苦的事情,而通过抓数据包的方式,去检索网页源码,对于源码的理解也是非常高效的.同时,网页请求的参数,有时并不那么直接,通过抓包,查询请求url,也是比较便捷的方式,一般使用谷歌,火狐等浏览器,都自带抓包功能

http协议

在互联网当中,浏览器与服务器之间的交互规则,都是基于http协议的,http协议也是爬虫开发者所必备的基础一环.在http协议中着重需要对以下加深理解:

请求url:get类型的请求参数在里面

请求体:post类型的参数在里面

cookie:用于存放对用户完成标记的数据(用户登录等,如果登录不在里面,就在请求的参数里找)

https协议(进阶)

https协议是http协议的加强版,比起http协议,其多了一道ssl验证,用于防范域名劫持,有一部分网站,是通过https协议与浏览器进行通信的,在爬取部分网站,需要通过https协议的请求时,我们需要在http请求基础上,增加一段对应的ssl签名(可以通过浏览器抓包获取)

html的解析

html的解析是爬虫当中非常重要的一个环节,对于html的解析,则可以使用xml的解析技术,基础的有dom解析(一次性加载整个页面)和sax解析(逐行解析页面),常用的有基于dom的xpath解析和css选择器方式的解析.通过对html的解析,可以将数据有效的提取出来,有效的保存下来

一门爬虫的后端语言

常用的爬虫语言有:Python和Java,其各有优劣,其中Python开发快速,而Java则爬虫程序的可维护高,就海量数据的爬取而言,个人推荐还是使用Java,毕竟数据量大也就意味着,爬取的时间很长,同时意外情况也层出不穷,代码经常需要进行调整

selenium:模拟浏览器(进阶)

后端语言编写的解释器,天生对js的支持就是很好,有些情况下,请求和数据无法绕过对js的调用,这个时候就需要selenium,Python和Java都有对其开源的包,selenium可以完成对简单js的调用,同时也可以在调用自身电脑浏览器的情况下,对js的完全支持,可以模拟人对浏览器的操作行为(自动化测试就是使用的selenium)

非html直接请求数据(进阶)

有时数据并不是以html的形式保存在页面当中,数据是以js对象的方式保存在内存当中(ceic的数据就是如此),遇到这个时候我们需要直接拼接http或者https请求,去访问网站,抓包,看其返回的数据格式,以对应的格式在爬虫程序中解析

数据库和SQL

数据可以爬取了,但是我们还需要以结构化的形式将其保存下来,这个时候,我们就需要一款数据库,同时对于数据库的标准化查询语言SQL也要有一定程度的理解,数据库有mysql,oracle等等,sql对于爬虫开发者来说掌握简单的查询和插入也是能够满足要求的

数据清洗(进阶)

爬取数据的意外情况很多,为了减少不必要的麻烦,往往数据的爬取过程中,不会去对数据的类型进行解析,也不会进行清洗,都是用字符串的形式,同一的保存下来,而且往往我们爬取下来的数据不能够直接的使用,例如:在爬取到的一条数据当中的一个字段为城市,但我们程序开发中使用的往往是与城市对应的code码,某一个字段如薪水,是一个范围3000-4000元,某一个字段 人数 单位有的是万人,有的是十万人,这个时候我们都是先爬取数据(爬取过程中,谁也不知道有多少种类型),后期对爬取的原始数据进行清洗(已经爬取下数据,所有的可能性都出来了)

数据加强(进阶)

数据的增强其实就是在数据清洗的过程中,对某些数据进行人为的定义,添加一些附属的字段,例如:年薪超过1000000就属于高级人才,人口超过5000万就属于人口大省等

后记:

爬虫入门的要求相较于单一的前端和后端来说,要稍微的高一些,一般而言,爬虫的开发人员也是后端开发者,同时爬虫也离不开对前端技术的了解.一个好的爬虫,往往都是一个团队,很多网站对网页都是进行防爬的,想要获取数据往往都需要,一个个技术的公关,例如:登录(最基础的),注毒(需要找到相应js,对数据进行解析),https,请求的图片校验(需要对图片进行解析,字母数汉字的有现成的开源包,但更多情况下需要自定义解析规则),ip限制(一般很少遇到,因为会误伤普通用户),基于登录的访问限制(需要完成自动化注册,不是一件简单的事情),以上都只是些比较常见的,还有一些就不一一列举了

你可能感兴趣的:(爬虫)