爬虫概述:
1. 概念
模拟浏览器, 发送请求, 获取响应
模拟客户端(浏览器)发送网络请求,接收请求响应
2. 分类
- 根据被爬取网站的数量不同
- 通用爬虫(搜索引擎)
- 聚焦爬虫(有目标网站)
是否以获取数据为目的
-
功能性爬虫(投票)
-
数据增量爬虫(招聘信息收集)
-
根据url地址和对应的页面内容是否改变,数据增量爬虫又可分类
- url变,内容变
- url不变,内容变(更新)
3.作用
- 数据采集
- 软件测试
- selenium
- 12306抢票
- 网站上投票
- 网络安全
- 短信轰炸
- web漏洞扫描
4.流程
- url_list
- 发送请求,获取响应
- 解析响应
- 提取url(1) / (提取数据)保存数据
http协议:
1.http 和 https(HTTP+SSL)
2. 请求头与响应头:
-
请求头
- host : 域名
- Connection(链接类型) : 长链接
- Upgrade-Insecure-Requests : 升级为https请求
- User-agent : 用户代理,提供系统信息和浏览器信息
- Referer : 页面跳转处,防盗链(图片/视频)
- Cookie : 状态保持
-
响应头
- Set-Cookie : 对方服务器设置cookie到用户浏览器的缓存
Content-Type : 请求类型
常见响应状态码:
所有的状态码都不可信,一切以是否从抓包得到的响应中获取到数据为准
network 中抓包得到的源码才是判断依据,elements中的源码时渲染之后的源码,不能作为判断标准
- 200 成功
- 302 跳转,新的url在响应的Location头中给出
- 303 浏览器对POST请求进行重定向至新的url
- 307 浏览器对与GET的响应重定向至新的url
- 403 资源不可用;服务器理解客户请求,但拒绝处理它(没有权限)
- 404 找不到页面
- 500 服务器内部错误
- 503 服务器由于维护或负载过重未能应答6,在响应中可能会携带Retry-After响应头;有可能是因为爬虫频繁访问url, 是服务器忽视爬虫的请求返回503响应状态码
浏览器请求的过程:
1. 浏览器
发送所有请求,进行渲染
2. 爬虫
只发送指定请求,不会渲染
- 骨骼文件 : html静态文件
- 肌肉文件 : js / ajax请求
- 皮肤 : css / font / 图片
抓包过程:
根据发送请求的流程分别在骨骼/肌肉/皮肤响应中查找数据