python爬虫
一、python爬虫
爬虫的概念
通过代码从互联网上获取数据,并且对这些数据进行提取、分析、以及清洗与整合存储
爬虫的分类:
1、通用爬虫
通用爬虫的概念:根据互联网的拓扑结构不断去爬取新的内容,然后把这些内容放入搜索引擎的数据仓库中
通用爬虫的用途:用于搜索引擎
搜索引擎分两部分:
- 检索系统
- 通用爬虫
搜索引擎现在获取数据的渠道:
-
通用爬虫
-
主动提交
robots协议
robots协议并不是技术层面的协议,是一个君子协定(可遵守可不遵守);
首先爬虫在访问一个网站的时候,首先会拿到这个网站的robots.txt文件(不是所有的网站都有),
拿到这个文件以后,从这个文件中提取相关信息,这些信息会规定哪些爬虫可以爬虫网站的哪些内容,
允许爬的则爬取,不允许的则不能爬取。如果是做搜索引擎一定要严格遵守网站的robots协议。
2、聚焦爬虫
聚焦爬虫的概念:根据客户或者公司的需求来定义一些针对性较强的爬虫
聚焦爬虫的工作原理
1.数据的抓取
主要问题:http协议
反爬:用户代理、ip禁止、验证码、会话处理等
2.数据的解析
主要问题:如何把获取的数据提取出有价值的信息
主要框架:re、xpath、bs4、jsonpath等
遇到的数据类型:html、json、js数据、xml数据等
3.数据的存储
csv文件、redis数据库、json数据、mysql等
二、HTTP协议
1、http协议简介
- (1) 是一个基于请求与响应的应用层协议,底层协议是TCP保证其可靠传输
- (2) 通过url来进行客户端与服务器之间的交互(url的解释:统一资源定位符,用于定位互联网上的资源的位置;格式, 协议://主机名.域名:端口号/路径…?参数1=值1&参数2=值2&…#锚点)
- (3) 是一种C/S(或者b/s,b/s是一种特殊的c/s)模式的协议,客户端发起请求,服务器接收请求并且处理然后做出响应
- (4) 是一种无状态协议
2、http的创建过程
1.创建TCP链接:三次握手
首先客户端发起一个是否同意创建TCP链接的请求;
然后服务器根据自身的条件决定是否能够创建链接,并且把这个决定的结果响应给客户端;
如果服务器同意客户端再次发起一个信号创建链接;
一旦链接创建好,就可以进行http通信。
2.客户端发起http请求
通过url把请求头和请求体提交给服务器相关的后台处理程序,
常见4种请求方式:get、post、put、delete,常用的是get和post
请求头:包含的是本次请求的相关配置信息(比如:主机、cookie等),决定了前端和后台数据交互的方式与格式
请求体:就是参数、即客户端向服务器提交的内容
3.get和post的区别
-
(1) GET的参数拼接在url后面,post的参数不在url中体现而是放在表单中提交
-
(2) get请求的有最大提交限制(因为浏览器对url的长度有限制),post没有
-
(3) 服务器接收请求,并且处理请求,然后将处理的结果响应给前端
-
(4) 判断数据是否还有传输,如果没有则通过四次挥手断开TCP链接
三、HTTPS协议
1、HTTPS简介
HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议
-
(1) HTTPS由两部分组成:HTTP+SSL/TLS
也就是在HTTP上又加上了一层处理加密信息的木块。
服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据 -
(2) HTTPS是一个安全通信通道,基于HTTP开发,用于在客户计算机和服务器之间交换信息
-
(3) HTTPS使用安全套接字层(SSL)进行信息交换
-
(4) HTTPS是有Netscape开发并内置于其浏览器中,用于对数据进行压缩和解压操作,并返回网络上传送的结果
-
(5) HTTPS世界上应用了Netscape的安全套接字层SSL作为HTTP应用层的子层
-
(6) HTTPS使用端口是443,而不是像HTTP那样使用端口80来和TCP/IP进行通信
关于http和https协议,可参考
https://blog.csdn.net/zhaozao5757/article/details/79523062
https://blog.csdn.net/weixin_34162629/article/details/91378269
等其他文章
四、抓包工具
1、抓包工具原理
2、fiddle安装
文件链接(windows版本)
链接:https://pan.baidu.com/s/1x0KwrXO1x0GIUBCTk768TA
提取码:rf90
安装后可能出现的问题:
1.更新,可更新可不更新
2.使用的时候要求安装证书,会自动提醒,安装即可
这些勾打上勾
3.有个人服务器的,可能与服务器代理有冲突,尽量不要开启服务器的时候用此工具抓包
3、fiddle常见的图标
fildder 4的界面和浏览器右键检查的调试界面有类似的地方
4、http请求
http请求包含: 请求行 请求头 请求内容
常见请求头
- accept :浏览器通过这个头告诉服务器,所支持的数据类型
- Accept-Charset:浏览器通过这个头告诉服务器,所支持哪种字符集
- Accept-Encodingt:浏览器通过这个头告诉服务器,所支持的压缩格式
- Accept-Language:浏览器通过这个头告诉服务器,所支持的语言环境
- Host:浏览器通过这个头告诉服务器,想访问哪台主机
- If-Modified-Since:浏览器通过这个头告诉服务器,缓存数据的时间
- Referer:浏览器通过这个头告诉服务器,客户机是哪个页面来的 (防盗链)
- Connection:浏览器通过这个头告诉服务器,请求完后是断开连接还是支持链接
- Transfer-Encoding:浏览器通过这个头告诉服务器,数据是分块方式发送的
- Expires:-1 控制浏览器不要缓存
- Cache-Control:no-cache
- Pragma:no-cache