爬虫的概念和作用
目录
01 爬虫的概念
02 爬虫的流程
03 HTTP协议
04 WEBSOCKET
.name { line-height: 58px; background-color: rgba(218, 121, 8, 1); border-radius: 5px }
- 爬虫的概念
爬虫的概念
爬虫更官方点的名字叫数据采集,英文一般称作spider,就是通过编程来全自动的从互联网上采集数据。 比如说搜索引擎就是一种爬虫。 爬虫需要做的就是模拟正常的网络请求,比如你在网站上点击一个网址,就是一次网络请求。
爬虫的作用
现如今大数据时代已经到来,网络爬虫技术成为这个时代不可或缺的一部分,企业需要数据来分析用户行为,来分析自己产品的不足之处,来分析竞争对手的信息等等,但是这些的首要条件就是数据的采集。 这其中使用爬虫较为有名的有今日头条等公司。
- 爬虫的流程
爬虫的本质
爬虫的本质就是自动化的去模拟正常人类发起的网络请求,然后获取网络请求所返回的数据。 跟我们人手动去点击一个连接,访问一个网页获取数据,并没有什么本质的区别。
爬虫的难点
爬虫的难点主要为两个方向: 数据的获取 一般来说我们想要抓取的网站是不希望我们去抓取他的数据的,那么这些网站就会做一些反爬虫的措施,来让我们无法去他的网站上抓取数据。所以我们也要做相应的措施去绕过这些反爬虫措施。 抓取数据的速度 我们抓取的目标的数据量,有时是非常庞大的,甚至几千万上亿的数据量,而有些甚至会要求实时的更新,所以抓取的速度也非常重要。我们一般会使用并发和分布式来解决速度的问题。
- 网络请求
网络请求其实就是在互联网上一次数据的传递。 而为了数据能够在庞杂的网络中能够正确,迅速的传递给目标主机。我们定义了许多的网络协议,也就是网络传输数据的规则,来实现网络的连接。 而这些协议中,我们使用的最多的,基本上就是HTTP/HTTPS协议。
HTTP协议报头
重点是:User-Agent,Referer
HTTP请求方法
基本是使用的是GET和POST
状态码
200 | 请求已成功,请求所希望的响应头或数据体将随此响应返回。 |
302 | 请求的资源现在临时从不同的 URI 响应请求。由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求。只有在Cache-Control或Expires中进行了指定的情况下,这个响应才是可缓存的。 新的临时性的 URI 应当在响应的 Location 域中返回。除非这是一个 HEAD 请求,否则响应的实体中应当包含指向新的 URI 的超链接及简短说明。 如果这不是一个 GET 或者 HEAD 请求,那么浏览器禁止自动进行重定向,除非得到用户的确认,因为请求的条件可能因此发生变化。 注意:虽然RFC 1945和RFC 2068规范不允许客户端在重定向时改变请求的方法,但是很多现存的浏览器将302响应视作为303响 |
404 | 请求失败,请求所希望得到的资源未被在服务器上发现。没有信息能够告诉用户这个状况到底是暂时的还是永久的。假如服务器知道情况的话,应当使用410状态码来告知旧资源因为某些内部的配置机制问题,已经永久的不可用,而且没有任何可以跳转的地址。404这个状态码被广泛应用于当服务器不想揭示到底为何请求被拒绝或者没有其他适合的响应可用的情况下。 |
Cookie和Session
cookie数据存放在客户的浏览器上,session数据放在服务器上
HTTPS和WebSocket协议
HTTP协议的缺点
HTTP协议最大的缺点就是明文传输,而在网络上数据传输的路径上有很大一部分都是暴露在公有环境下的,所以数据是很容易泄露。
HTTPS协议
因为HTTP的这个缺点,所以就出现了基于SSL或者TSL的HTTPS协议。
在HTTPS请求发起之前,客户端会首先向服务端发起请求,获取证书。HTTPS传输的数据是经过证书加密以后的数据,这就避免了数据泄露的风险。
HTTPS保证了安全性的同时,也降低了传输的速度,协议的速度比HTTP慢大概2-100倍。
WebSocket协议
WebSocket是HTML5开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。
由于HTTP 协议是一种无状态的、无连接的、单向的应用层协议。它采用了请求/响应模型。通信请求只能由客户端发起,服务端对请求做出应答处理。
这种通信模型有一个弊端:HTTP 协议无法实现服务器主动向客户端发起消息。
这种单向请求的特点,注定了如果服务器有连续的状态变化,客户端要获知就非常麻烦。大多数 Web 应用程序将通过频繁请求实现长轮询。轮询的效率低,非常浪费资源(因为必须不停连接,或者 HTTP 连接始终打开)。
在WebSocket API中,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。
浏览器通过 JavaScript 向服务器发出建立 WebSocket 连接的请求,连接建立以后,客户端和服务器端就可以通过 TCP 连接直接交换数据。
由于websocket出现的时间较短,应用的范围比较小,所以使用的较少。