一、爬虫
网络资源的下载工具,工作与万维网环境,持续获取网页网站中的网络信息。可持续的数据采集机器人
1、搜索引擎技术使用爬虫
2、数据分析、数据挖掘领域,需要爬虫进行数据准备
3、数据批处理、采集,大量获取某些网站中的网络资源
爬虫进行数据准备截断,数据下载完毕、如何处理与爬虫无关,爬虫只负责下载
网站之间、网页之间是强关联的,通过超链接技术指向新的网页或网站。通过强关联特性,完成若干网页的拓扑跳转与处理
网页与网页之间有关联:出链接、入链接
理论上,通过一个有效的网页可以拓扑所有的网页。
爬虫在网页的工作:
1. 获取资源
2. 获取跳转地址(新链接)
二、网络资源的种类:
1. 文本资源(txt,html,shtm,xml)
2. 二进制数据(jpg,png,gif,bmp)
3. 音频数据(mp3)
4. 视频数据(mp4,rmvb,flv)
URL网络资源定位符,所有的网络资源,都有唯一的URL
三、关于B/S架构(浏览器/web服务器模型)
爬虫属于客户端,模拟浏览器行为,获取网站资源
使用http协议(基于TCP),只要获取了目标的端口和IP,可以直接对网站web服务进行连接
如果网站使用https协议(SSL),我们需要与网站进行安全连接openssl,否则无法与网站交互
① http协议的使用
② 正则表达式技术(html语言)
1)下载网页
2)提取关键数据
3)匹配更多新地址
爬虫的步骤:
1、下载资源
2、持续拓扑执行,获取若干资源
四、http下载
资源的下载流程(http 80,https 443):
(一)URL地址解析
1. 资源完整的URL
2. 协议类型
3. 网站域名
#include<netdb.h>
struct hostent* ent = gethostbyname(域名);
//ent->h_addr_list;地址表中存储指向服务的公网IP,大端序
4. 存储路径
5. 资源名
6. 端口
7. ip地址
(二)网络初始化
(三)连接
(四)资源下载
1. 构建请求头(http请求协议)
页面请求方式:GET POST
请求资源权重:对于一个网页的性能和体验来讲,控制好请求发起的优先级是非常重要的,网络带宽是有限的,优先去加载重要的资源,让次要的资源延后,就可以让我们的网站体验提升一个台阶。
长链接:客户端主动连接,客户端主动断开
短连接:客户端主动连接,服务端主动断开,请求响应交互一次
2. 发送请求头
3. 服务器解析请求
4. 爬虫客户端读取响应
根据响应码,判断响应是否成功,成功则进入存储流程
响应头一般都小于8192,为了一次完整的读完响应头,第一次读直接读8192。会读到完整的响应头和一部分响应体
HTTP/1.1 响应码 响应信息\r\n
5. 爬虫处理响应内容获取存储资源到磁盘
五、https下载
关于HHTPS协议,最大限度保证传输安全
openssl技术,可以完成https协议的安全认证
sudo apt-get install libssl-dev
sudo apt-get install libssl-doc
man SSL
http不安全,数据未加密保护,https如何改善?
1. https协议采用嵌套加密方式,最大限度保证传输安全
2. 通过认证,让客户端验证服务器的CA数字证书,看是否有效
加密:密钥对。多个公钥和一个私钥构成,密文串由128位随机码组成,保证唯一性
私钥加密数据,公钥解密
对称加密:安全性低,适合加密大段数据,速度快
非堆成加密(RSA):安全性高,适合加密小段重要数据,速度慢