文章目录
- 一、在做爬虫之前我们首先需要知道爬虫是什么?
- 二、爬虫的分类
- 三、robot协议
- 四、爬虫工程师必须掌握的HTTP协议
- 1.什么是http协议?
- 2.端口号
- 3.http协议的特点
- 4.url:统一资源定位符
- 5.http工作过程
- 6.浏览器输入一个url,为什么可以加载出一个页面?为什么在抓包的过程中请求了一个url,会出现很多的资源请求?
- 7.客户端请求
- 8.服务响应

- 概念:一个可以自动抓取互联网上信息的脚本。
- 解决的问题:
- ①解决网站创立之初的冷启动问题;
- ②做搜索引擎少不了爬虫,爬虫是搜索引擎的根基。例如百度搜索引擎;
- ③建立知识图谱,帮助建立机器学习知识图谱;
- ④可以制作各种商品的比价软件,趋势分析;
- 通用网络爬虫 :关键字获取既定的目标 覆盖率很大(百度 谷歌 雅虎…搜索引擎)
- 聚焦网络爬虫 :到互联网上有选择有目的去抓取特定的目标和相关的主要内容增量网络爬虫
- 增量式网络爬虫 :只采取增量式更新或者只爬行新产生或者是已经发生变化的网页
- 深层网络爬虫 :深层 大部分内容是可以通过静态链接获取到的,隐藏在搜索表单之后的一些数据有可能需要用户提交一些关键词才可以获得的WEB页面
作为一个守法的公民,我们一定要遵守互联网的规则!因此我么需要遵守一个协议—robot协议! 网址后+robot.txt
- 定义:网络爬虫排除标准
- 作用:告诉搜索引擎哪里可以爬,哪里不可以爬
- http协议是一个超文本传输协议
- http协议是一个约束发布和接受html页面的规范
- http协议端口号:80
- https协议的端口号:443
- http协议是一个应用层协议
- http协议是无状态、无连接的。
- 每次请求都是独立的。
- 客户端每次请求都不能记录请求状态,请求与请求之间相互独立,不能通信(cookie和session可以解决通信问题)。
-
格式:
://:/?&
-
例如:
http://baidu.com/video/?keyword=美女
-
为啥可以通过url定位互联网上的任意资源
- ip地址:可以定位电脑
- 端口号:端口号—用来从互联网进入电脑
- 路径:就是为了在电脑中找到对应的资源路径
-
三种特殊符号
- 符号
?
:问号后面就是请求参数 - 符号
&
: 请求参数用&连接,例如:?name=zhangsan&age=12 - 符号
#
:锚点,锚点就是在请求这个url时,页面会跳入的指定位置
- 符号
(1)地址解析,将url解析出对应的内容
- host:服务器的IP地址或者域名
- port:服务器的端口(如果是走协议默认端口,缺省端口80)
- path:访问资源的路径
- query-string:参数,发送给http服务器的数据anchor:锚(跳转到网页的指定锚点位置)
(2)封装http请求数据包
(3)封装成TCP包,建立TCP连接(TCP的三次握手)
- 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; SYN:同步序列编号(Synchronize Sequence Numbers)
- 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
- 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
- 完成三次握手,客户端与服务器开始传送数据
(4)客户端发送请求
(5)服务器接收请求,发送响应
(6)服务器关闭tcp连接
6.浏览器输入一个url,为什么可以加载出一个页面?为什么在抓包的过程中请求了一个url,会出现很多的资源请求?- 我们在浏览器输入一个url,客户端会发送这个url对应的一个请求到服务器获取内容
- 服务器收到这个请求,解析出对应内容,之后将内容封装到响应里发送到客户端
- 当客户端拿到这个html页面,会查看这个页面中是否有css、js、image等url,如果有,在分别进行请求,获取到这些资源。
- 客户端会通过html的语法,将获取到的所有内容完美的显示出来。
-
①组成:请求行、请求头部、空行、请求数据四个部分组成
-
② 请求方法:get/post
-
③get和post的区别
- (1)get是从服务器获取内容,post是向服务器传递内容
- (2)get不安全,因为参数拼接在url后面。post比较安全,因为参数是放在是实体里面。
- (3)get传参大小受限,post不受限。
-
④重要的请求头:
User-Agent:客户端请求标识。
Accept: (传输文件类型)允许传入的文件类型。
Referer :表明产生请求的网页来自于哪个URL,用户是从该Referer页面访问到当前请求的页面。
cookie (cookie):在做登录的时候需要封装这个头。
Content-Type (POST数据类型)
发送POST请求时,需要特别注意headers的一些属性:
Content-Length: 144: 是指发送的表单数据长度为144,也就是字符个数是144个。
X-Requested-With: XMLhttpRequest :表示Ajax异步请求。
8.服务响应
- 组成:状态行,响应头,空行,响应正文。
- 重要响应头:Content-Type:text/html;charset=UTF-8:告诉客户端,资源文件的类型,还有字符编码
- 常见的状态码: