Web知识补充(一)
要想学好爬虫,web网络的基本知识是必不可少的,本文简单介绍了一些基础的网络知识
!!!本文内容主要基于我最近看的崔庆才大佬的《Python3网络爬虫开发实战2》(强推!!)和网上的一些博客。
一.URI和URL
URI(Uniform Resource Identifier)又称统一资源标识符,是一个用于标识某一互联网资源名称的字符串,web上你能看到的任何资源:HTML文档,图片,视频.......都可以用URI来进行定位。
URL(Universal Resource Locator)又叫统一资源定位符,用来表示互联网上的某个资源地址,也就是我们俗称的网址,URL是URI的子集,URI除了包括URL还包括URN(Uniform Resource Name)统一资源名称,正如它的名字,URN只为资源命名而不指导如何找到资源,而URL则指导我们去找到资源。
URL是有一定的格式规范的,基本的格式如下:
1 | protocol :// hostname[:port] / path / [;parameters][?query]#fragmen |
1) protocol(协议)
protocol 是指网络传输协议,常用的有http,http,ftp。
2) hostname(主机名)
是指存放资源的服务器的域名、主机名或 IP
地址。www.baidu.com
就是一个域名。
3) port(端口号)
port 是一个可选的整数,它的取值范围 是 0-65535。如果该值被省略,则使用默认的端口号,例如http的默认端口号是80。
4) path(路由地址)
由零个或多个/
符号隔开的字符串,一般用于网络资源在服务器中的地址。。
5) query (查询)
查询,常以?开始,后面跟查询用的参数,多个参数之间用&隔开,例如:www.baidu.com/s?wd=爬虫
就表示查询"爬虫"有关的资源。
6) fragment(信息片断)
片段是对资源描述的部分补充,可以理解为资源内部的书签。
二.http和https协议
首先我们要知道什么是协议,百度上给的定义为:网络协议为计算机网络中进行数据交换而建立的规则、标准或约定的集合。
http协议
http是Hyper Text Transfer Protocol,超文本传输协议的缩写,是一种发布和接收 HTML 页面的方法,被用于在浏览器和网站服务器之间传递信息。http 协议以明文方式发送内容,不提供任何方式的数据加密,因此安全性较差,不适合传输密码之类的敏感信息。
https协议
https是HyperText Transfer Protocol over Secure Socket Layer的缩写,可以理解为http+ssl,经由 http进行通信,但利用 ssl 来加密数据包,保护交换数据的隐私与完整性。
http原理示意图:
https原理:
http的版本也经历几代的更新,从最初的http0.9到http1.0到大部分网站使用的http1.1再到现在最新的http2.0,值得一提的是http2.0是建立在https协议基础上的,因此有一定的安全性,不少国内外的互联网公司已经开始使用http2.0.
我们先前所介绍的requests模块是不支持访问http2.0的网站的,会产生报错,如果想爬取基于http2.0的网站,则需要别的办法,我们之后会介绍。
如果你想查看一个网站是否使用http2.0协议,可以鼠标右键进入检查
找到网络
可以发现有一栏叫做协议,就可以看到该资源所使用的协议类型了。
如果没有协议这一栏的话可以吧鼠标放在栏与栏的分隔处,鼠标右键,标头选项,把协议一栏勾上就可以了。
http请求方法
请求方法是用于标识请求服务端的方式,http使用的请求方法如下图所示
序号 | 方法 | 描述 |
---|---|---|
1 | GET | 请求指定的页面信息,并返回实体主体。 |
2 | HEAD | 类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头 |
3 | POST | 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。 |
4 | PUT | 从客户端向服务器传送的数据取代指定的文档的内容。 |
5 | DELETE | 请求服务器删除指定的页面。 |
6 | CONNECT | HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。 |
7 | OPTIONS | 允许客户端查看服务器的性能。 |
8 | TRACE | 回显服务器收到的请求,主要用于测试或诊断。 |
9 | PATCH | 是对 PUT 方法的补充,用来对已知资源进行局部更新 。 |
而我们最常用的是get和post两种请求手段,之前也有过介绍。我们同样可以在网络中看到资源的请求方法。
具体的请求过程我会在之后的文章介绍,那么本文到这里就结束了,感谢各位阅读Thanks♪(・ω・)ノ