1
+ * [ 爬虫预备知识] ( #爬虫预备知识 )
2
+ * [ 概要] ( #概要 )
3
+ * [ 爬虫定义、分类和流程] ( #爬虫定义分类和流程 )
4
+ * [ 爬虫定义] ( #爬虫定义 )
5
+ * [ 爬虫的分类] ( #爬虫的分类 )
6
+ * [ 爬虫的用途] ( #爬虫的用途 )
7
+ * [ 爬虫的流程] ( #爬虫的流程 )
8
+ * [ robots 协议] ( #robots-协议 )
9
+ * [ 总结] ( #总结 )
10
+ * [ HTTP 与 HTTPS] ( #http-与-https )
11
+ * [ HTTP 与 HTTPS 的概念] ( #http-与-https-的概念 )
12
+ * [ HTTP] ( #http )
13
+ * [ HTTP 请求流程] ( #http-请求流程 )
14
+ * [ 五层网络模型] ( #五层网络模型 )
15
+ * [ 网络模型对应关系表] ( #网络模型对应关系表 )
16
+ * [ 对应关系] ( #对应关系 )
17
+ * [ url 地址格式] ( #url-地址格式 )
18
+ * [ HTTP 请求] ( #http-请求 )
19
+ * [ HTTP 响应] ( #http-响应 )
20
+ * [ HTTPS] ( #https )
1
21
# 爬虫预备知识
2
22
> 爬虫课程中所需要的相关知识储备
3
23
11
31
#### 爬虫定义
12
32
> 网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟浏览器发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序。
13
33
14
- > 原则上,只要是浏览器(客户端)能做的事情,爬虫都能够做
34
+ > 原则上,只要是浏览器(客户端)能做的事情,爬虫都能够做。
15
35
16
36
#### 爬虫的分类
17
37
1 . `` 通用爬虫 `` :通常指搜索引擎的爬虫
32
52
3 . 如果提取url,则继续发送请求获取响应
33
53
4 . 如果提取数据,则将数据进行保存
34
54
35
- #### robots协议
36
- > Robots协议:网站通过Robots协议告诉搜索引擎哪些页面可以抓取 ,哪些页面不能抓取,但它仅仅是道德层面上的约束 例如:[ 淘宝的robots协议 ] ( https://www.taobao.com/robots.txt )
55
+ #### robots 协议
56
+ > Robots 协议:网站通过 Robots 协议告诉搜索引擎哪些页面可以抓取 ,哪些页面不能抓取,但它仅仅是道德层面上的约束 例如:[ 淘宝的 robots 协议 ] ( https://www.taobao.com/robots.txt )
37
57
38
58
### 总结
39
59
- 爬虫概念:模拟浏览器发送网络请求,接收请求响应。只要是浏览器(客户端)能做的事情,爬虫都能够做。
40
60
- 爬虫的分类:聚焦爬虫、通用爬虫
41
61
- 爬虫的流程:
42
- 1. 向起始url发送请求 ,并获取响应
62
+ 1. 向起始 url 发送请求 ,并获取响应
43
63
2. 对响应进行提取
44
- 3. 如果提取url ,则继续发送请求获取响应
64
+ 3. 如果提取 url ,则继续发送请求获取响应
45
65
4. 如果提取数据,则将数据进行保存
46
66
47
67
54
74
> 协议:协议规定了通信双方必须遵守的数据传输格式,这样通信双方按照约定的格式才能准确的通信。
55
75
> 无状态:无状态是指两次谅解通信之间是没有任何联系的,每次都是一个新的连接,服务端不会记录前后的请求信息。
56
76
57
- ##### HTTP请求流程
77
+ ##### HTTP 请求流程
58
78
59
79
![ ] ( ./images/http.png )
60
80
61
81
1 . 浏览器通过域名解析服务器(DNS)获取IP地址
62
- 2 . 浏览器先向IP发起请求 ,并获取相应
63
- 3 . 在返回的响应内容(html)中,会带有css 、js、图片等url地址,以及ajax代码 ,浏览器按照响应内容中的顺序依次发送其他的请求,并获取相应的响应
64
- 4 . 浏览器每获取一个响应就对展示出的结果进行添加(加载),js,css等内容会修改页面的内容 ,js也可以重新发送请求,获取响应
82
+ 2 . 浏览器先向 IP 发起请求 ,并获取相应
83
+ 3 . 在返回的响应内容(html)中,会带有 css 、js、图片等 url 地址,以及 ajax 代码 ,浏览器按照响应内容中的顺序依次发送其他的请求,并获取相应的响应
84
+ 4 . 浏览器每获取一个响应就对展示出的结果进行添加(加载),js,css 等内容会修改页面的内容 ,js也可以重新发送请求,获取响应
65
85
5 . 从获取第一个响应并在浏览器中展示,直到最终获取全部响应,并在展示的结果中添加内容或修改————这个过程叫做浏览器的渲染
66
86
67
87
##### 五层网络模型
80
100
4 . 数据链路 -------> 数据链路层
81
101
5 . 物理介质 -------> 物理层
82
102
83
- ##### url地址格式
103
+ ##### url 地址格式
84
104
85
105
![ ] ( ./images/http的url规则.jpg )
86
106
> 格式说明: scheme://host[ : port ] /path/.../[ ?query-string] [ #anchor ]
87
107
88
108
1 . scheme:协议(例如:http, https, ftp)
89
- 2 . host:服务器的IP地址或者域名
109
+ 2 . host:服务器的 IP 地址或者域名
90
110
3 . port:服务器的端口(如果是走协议默认端口,缺省端口80)
91
111
4 . path:访问资源的路径
92
- 5 . query-string:参数,发送给http服务器的数据
112
+ 5 . query-string:参数,发送给 http 服务器的数据
93
113
6 . anchor:锚(跳转到网页的指定锚点位置)
94
114
95
115
##### HTTP 请求
100
120
![ ] ( ./images/请求协议案例.jpg )
101
121
102
122
- ** 请求方式**
103
- > 根据HTTP标准,HTTP请求可以使用多种请求方法 。
104
- >
105
- > HTTP1.0定义了三种请求方法 : GET, POST 和 HEAD方法 。
106
- >
107
- > HTTP1.1新增了五种请求方法 :OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。
108
-
109
- 请求方式 | 描述
110
- ------------- | -------------
111
- GET| 请求指定的页面信息,并返回实体主体。
112
- HEAD | 类似于get请求 ,只不过返回的响应中没有具体的内容,用于获取报头
113
- POST | 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和 /或已有资源的修改。
114
- PUT | 从客户端向服务器传送的数据取代指定的文档的内容
115
- DELETE | 请求服务器删除指定的页面。
116
- CONNECT | HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
117
- OPTIONS | 允许客户端查看服务器的性能。
118
- TRACE | 回显服务器收到的请求,主要用于测试或诊断。
123
+ > 根据 HTTP 标准,HTTP 请求可以使用多种请求方法 。
124
+ >
125
+ > HTTP1.0 定义了三种请求方法 : GET, POST 和 HEAD 方法 。
126
+ >
127
+ > HTTP1.1 新增了五种请求方法 :OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。
128
+
129
+ | 请求方式 | 描述|
130
+ | ---------| ------------------------------------------------------------------------------------------------------------------------------------------ |
131
+ | GET| 请求指定的页面信息,并返回实体主体。|
132
+ | HEAD | 类似于 get 请求 ,只不过返回的响应中没有具体的内容,用于获取报头|
133
+ | POST | 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和 /或已有资源的修改。|
134
+ | PUT | 从客户端向服务器传送的数据取代指定的文档的内容|
135
+ | DELETE | 请求服务器删除指定的页面。|
136
+ | CONNECT | HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。 |
137
+ | OPTIONS | 允许客户端查看服务器的性能。|
138
+ | TRACE | 回显服务器收到的请求,主要用于测试或诊断。|
119
139
120
140
- ** 常见请求头**
121
141
122
- 请求头 | 作用
123
- ------------- | -------------
124
- ** Cookie** | Cookie
125
- ** User-Agent** | 浏览器名称
126
- ** Referer** | 页面跳转处
127
- Host | 主机和端口号
128
- Connection | 链接类型
129
- Upgrade-Insecure-Requests | 升级为 HTTPS 请求
130
- Accept | 传输文件类型
131
- Accept-Encoding | 文件编解码格式
132
- x-requested-with : XMLHttpRequest | ajax 请求
142
+ | 请求头 | 作用|
143
+ | ----------------------------------- | ------------------- |
144
+ | ** Cookie** | Cookie|
145
+ | ** User-Agent** | 浏览器名称|
146
+ | ** Referer** | 页面跳转处|
147
+ | Host | 主机和端口号|
148
+ | Connection | 链接类型|
149
+ | Upgrade-Insecure-Requests | 升级为 HTTPS 请求|
150
+ | Accept | 传输文件类型|
151
+ | Accept-Encoding| 文件编解码格式|
152
+ | x-requested-with : XMLHttpRequest | ajax 请求|
133
153
134
154
[ 点击查看更多] ( https://github.com/CriseLYJ/Python-crawler-tutorial-starts-from-zero/blob/master/HTTP%E8%AF%B7%E6%B1%82%E5%88%97%E8%A1%A8.md )
135
155
@@ -143,51 +163,51 @@ x-requested-with : XMLHttpRequest | ajax 请求
143
163
- ** 响应头**
144
164
145
165
146
- 响应头 | 作用
147
- ------------- | -------------
148
- ** Location** | 这个头配合302状态码使用 ,告诉用户端找谁。
149
- ** Set-Cookie** | 设置和页面关联的Cookie
150
- Content-Type| 服务器通过这个头,回送数据的类型
151
- Server | 服务器通过这个头,告诉浏览器服务器的类型
152
- Content-Length | 服务器通过这个头,告诉浏览器回送数据的长度
153
- Connection | 服务器通过这个头,响应完是保持链接还是关闭链接
166
+ | 响应头 | 作用|
167
+ | ---------------- | ------------------------------------------------ |
168
+ | ** Location** | 这个头配合 302 状态码使用 ,告诉用户端找谁。|
169
+ | ** Set-Cookie** | 设置和页面关联的 Cookie |
170
+ | Content-Type| 服务器通过这个头,回送数据的类型|
171
+ | Server | 服务器通过这个头,告诉浏览器服务器的类型|
172
+ | Content-Length | 服务器通过这个头,告诉浏览器回送数据的长度|
173
+ | Connection | 服务器通过这个头,响应完是保持链接还是关闭链接|
154
174
155
175
- ** HTTP 状态码**
156
176
157
- > 当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头 (server header)用以响应浏览器的请求。
158
- >
159
- > HTTP状态码的英文为HTTP Status Code。
160
- >
161
- > HTTP 状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。HTTP 状态码共分为5种类型
162
-
163
- 分类 | 分类描述
164
- ------------- | -------------
165
- 1** | 信息,服务器收到请求,需要请求者继续执行操作
166
- 2** | 成功,操作被成功接收并处理
167
- 3** | 重定向,需要进一步的操作以完成请求
168
- 4** | 客户端错误,请求包含语法错误或无法完成请求
169
- 5** | 服务器错误,服务器在处理请求的过程中发生了错误
170
-
171
- - 常见的HTTP状态码 :
177
+ > 当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含 HTTP 状态码的信息头 (server header)用以响应浏览器的请求。
178
+ >
179
+ > HTTP 状态码的英文为 HTTP Status Code。
180
+ >
181
+ > HTTP 状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。HTTP 状态码共分为 5 种类型
182
+
183
+ | 分类 | 分类描述|
184
+ | ------| ------------------------------------------------ |
185
+ | 1** | 信息,服务器收到请求,需要请求者继续执行操作|
186
+ | 2** | 成功,操作被成功接收并处理|
187
+ | 3** | 重定向,需要进一步的操作以完成请求|
188
+ | 4** | 客户端错误,请求包含语法错误或无法完成请求|
189
+ | 5** | 服务器错误,服务器在处理请求的过程中发生了错误|
190
+
191
+ - 常见的 HTTP 状态码 :
172
192
- 200 - 请求成功
173
- - 301 - 资源(网页等)被永久转移到其它URL
193
+ - 301 - 资源(网页等)被永久转移到其它 URL
174
194
- 404 - 请求的资源(网页等)不存在
175
195
- 500 - 内部服务器错误
176
196
177
197
[ 点击查看更多] ( https://github.com/CriseLYJ/Python-crawler-tutorial-starts-from-zero/blob/master/HTTP%E5%93%8D%E5%BA%94%E5%88%97%E8%A1%A8.md )
178
198
179
199
#### HTTPS
180
- - HTTP + SSL(安全套接字层),即带有安全套接字层的超本文传输协议
200
+ - HTTP + SSL(安全套接字层),即带有安全套接字层的超本文传输协议
181
201
- 默认端口号:443
182
202
183
203
- ** HTTPS 作用**
184
- > 在 传输过程中 对数据进行加密 ,防止中间路由器、交换机等中间的路由设备对数据进行篡改。
204
+ > 在传输过程中对数据进行加密 ,防止中间路由器、交换机等中间的路由设备对数据进行篡改。
185
205
186
206
- ** HTTP 与 HTTPS 优缺点**
187
207
> HTTP 因为不需要对数据进行加密所以性能更高,但是安全性差。
188
- >
189
- >
208
+ >
209
+ >
190
210
> HTTPS 虽然安全性高,但是因为浏览器和服务器端需要对数据进行加解密,所以占用服务器资源。
191
211
192
212
- ** 当前形式**
193
- > 注意:目前HTTPS是未来主流 ,微信小程序,iOS客户端,android客户端 的接口提供都需要 HTTPS 接口支持。
213
+ > 注意:目前 HTTPS 是未来主流 ,微信小程序,iOS 客户端,android 客户端的接口提供都需要 HTTPS 接口支持。
0 commit comments