#内容为个人理解,若有错误还望各位大佬指正
什么是爬虫
网络爬虫是一种自动获取网页内容的程序,是搜索引擎的重要组成部分。网络爬虫为搜索引擎从万维网下载网页。也被叫做 网络蜘蛛。
简单来说就是通过某种手段,机械化的去浏览网页,并将想要得到的内容拿出来
爬虫在使用场景种的分类
-
通用爬虫:
抓取系统重要组成部分。抓取的是一整张页面数据 -
聚焦爬虫:
建立在通用爬虫基础之上。抓取的页面中特定的局部内容(数据解析)
数据解析的三种方式:-
正则表达式
1.进行指定标签的定位 2.标签或者标签对应的属性中存储的数据进行提取(解析)
-
bs4
1.实例化一个BeautifulSoup对象, 并且将页面源码数据加载到该对象中 2.通过调用BeautifulSoup对象中相关的属性或者方法进行标签定位和数据提取 环境安装: pip install bs4 pip install lxml
-
Xpath
1.实例化一个etree对象, 且需要将解析的页面源码数据加载到该对象中 2.调用etree对象中的xpath方法结合xpath表达式实现标签的定位和内容的捕获 环境安装: pip install lxml
-
-
增量式爬虫:
检测网站中数据更新的情况。只会抓取网站中最新更新出来的数据
反爬
见名知意, 就是为了防止别人爬取自己网页当中的数据而做出的防御措施(例如某进货网站当中的 security-x5 )
反反爬
与反爬相对立, 专门破解网页当中的一些防御措施, (比如你想要去网页当中拿到你想要的东西, 但是网页会有登录提示, 或者滑块, 通过某种手段让计算机模拟操作来通过这一阶段)
robots.txt协议
君子协议, robots协议也被称为爬虫协议, 网站通过 robots 协议来告诉搜索引擎哪些内容是可以爬取,哪些内容是不可以爬取的。这并非一种强有力的防御措施或是某种手段, 而是告知对方的一种方式。(在网址的后方写入 robots.txt 即可查看相关信息)
http协议
服务器和客服端进行数据交互的一种形式。
好比两个间谍潜伏在同一个内部, 当这两个人沟通时为了防止敌人识别两人的沟通内容, 会制定一种特殊的沟通协议。这种协议就类似于 http协议 。
请求头信息
客户端向服务器发出的请求信息
指令 | 内容 |
---|---|
User-Agent | 请求载体的身份标识 |
Connection | 请求完毕后, 是否断开连接 |
Accept | 告诉服务器,浏览器可以接受的文件格式(例如文本,图片,视频等 |
Accept-Charaset | 浏览器接受的字符编码 |
Accept-Encoding | 可以接受哪些压缩后的数据 |
Accept-Language | 浏览器支持的语言 |
Host | 浏览器要找的主机 |
IF-MODIFIED-Since: file,time | 告诉服务器缓存中的文件,以及这个文件的时间 |
Referer | 告诉服务器来源, 常用于防止下载, 盗链 |
Date | 浏览器发送数据的请求时间 |
响应头信息
服务器收到客户端发出请求所作出的响应信息
指令 | 内容 |
---|---|
Content-Type | 服务器响应回客户端的数据类型(即 内容格式和编码) |
Server | 告诉浏览器我是 ??? |
Content-Encoding:gzip | 告诉浏览器使用了gzip |
Content-Lenght | 告诉浏览器回送的数据大小 |
Content-Language | 支持的语言 |
Last-Modified | 告诉浏览器该资源上次更新时间是多少 |
Refresh | 过多久刷新到哪里去(url=) |
Content-Dipposition | 告诉浏览器有文件下载 |
Transfer-Encoding | 传输编码 |
Expires | 告诉浏览器如何缓存页面 |
Cache-Control | 告诉浏览器如何缓存页面(因为浏览器的兼容性 最好设置两个) |
#部分消息头和响应头来源于其他博主
https协议
安全的超文本传输协议, https和http基本上是相同的, https种的 s 就是 security(安全) 的意思。涉及 数据加密。
数据加密方式
- 对称密钥加密
- 由客户端对数据进行加密
- 将加密的数据以及密钥一同发送给服务器 (密钥:解密的方式)
- 服务收到密文及密钥并进行破解收取数据
弊端:在请求的过程中, 如果数据被拦截则信息暴露
-
非对称密钥加密
- 由服务器设定某种加密方式并发送给客户端
- 客户端按照服务器发来的加密方式对数据进行加密再发送给服务器
- 服务器使用自身设定的加密方式进行解密
弊端:在服务器向客服端发送密钥时, 如果密钥被截取并篡改, 那么客户端将无法收到由服务器直接发送来的密钥
-
证书密钥加密
- 服务器制定密钥
- 将密钥转交第三方 证书认证机构
- 证书认证机构将收到的密钥进行签名认证
- 将证书及密钥一并转交给客户端