当前位置 : 主页 > 编程语言 > python >

python爬虫-02-http协议认识,以及python爬虫相关知识点认识

来源:互联网 收集:自由互联 发布时间:2022-06-15
1、什么是http和https协议 HTTP协议:全称是​​HyperText Transfer Protocol​​​,中文意思是超文本传输协议,是一种发布和接收HTML页面的方法。服务器端口号是​​80​​端口。 HTTPS协议:

1、什么是http和https协议

HTTP协议:全称是​​HyperText Transfer Protocol​​​,中文意思是超文本传输协议,是一种发布和接收HTML页面的方法。服务器端口号是​​80​​端口。

HTTPS协议:是HTTP协议的加密版本,在HTTP下加入了SSL层。服务器端口号是​​443​​端口。

2、浏览器中发送http请求的过程是什么

(1)用户在浏览器中输入一个URL链接,并按下回车键之后,浏览器会向HTTP服务器发送HTTP请求。

请求方式主要分为​​GET​​​和​​POST​​两种方式

(2)当我们在浏览器中输入​​UTL​​​的时候,浏览器会发送一个​​Request​​​请求去获取该​​URL​​​的​​HTML​​​文件,服务器会把​​Response​​文件对象发会给浏览器;

(3)浏览器分析返回的​​Response​​​中的​​HTML​​​,会发现其中引用了很多其他类型的资源,比如​​images、CSS、JS​​​文件等。这个时候浏览器会自动再次发送​​Request​​请求去获取这些资源;

(4)当所有的文件下载成功后,网页会根据​​HTML​​语法的结构,将其内容展现出来,也就是我们看到的完整的网页了。

3、URL详解

​​URL​​​是​​Uniform Resource Locator​​​的简写,统一资源定位符。 一个​​URL​​由以下几部分组成:

scheme://host:port/path/?query-string=xxx#anchor
  • scheme:代表的是访问的协议,一般为​​http​​​或者​​https​​等;
  • host:代表的是主机名,域名,类似于:​​weixin.qq.com​​;
  • port:端口号,如果是​​http​​​协议,默认是80,​​https​​协议,默认是443,当然了,你也可以直接后面指定端口号;
  • path:路径,比如说​​https://weixin.qq.com/yunweijia​​​,那么​​yunweijia​​​就是​​path​​;
  • query-string:查询字符串;
  • anchor:锚点,前端使用的比较多,后端几乎不会使用。

在浏览器中请求一个​​url​​​,浏览器会对这个​​url​​进行一个编码。除英文字母,数字和部分符号外,其他的全部使用百分号+十六进制码值进行编码。

例如:我们百度了一个“运维家的博客”,那么我们看到的浏览器地址如下:

python爬虫-02-http协议认识,以及python爬虫相关知识点认识_客户端

当我们把这个地址复制出来之后,就变成了如下内容:

https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=62095104_26_oem_dg&wd=%E8%BF%90%E7%BB%B4%E5%AE%B6%E7%9A%84%E5%8D%9A%E5%AE%A2&oq=%25E8%25BF%2590%25E7%25BB%25B4%25E5%25AE%25B6%25E7%259A%2584%25E5%2585%25AC%25E4%25BC%2597%25E5%258F%25B7&rsv_pq=e3d7145400001091&rsv_t=6f9ea6jfVcHGs9LYvGE8tJ2J0mXLfwIfvoKmvZbQoqzwmB1o4iwwtk93tS7iuiukKSIlxRfaXLOZ&rqlang=cn&rsv_enter=1&rsv_dl=tb&rsv_btype=t&inputT=934&rsv_sug3=36&rsv_sug1=24&rsv_sug7=100&rsv_sug2=0&rsv_sug4=1710

可以看到中文确实变成了百分号+16进制的内容哈。

4、常用的请求方式

在​​http​​协议中,常用的有8种请求方式,如下:

方法

描述

1

GET

请求指定的页面信息,并返回实体主体

2

POST

向指定资源提交数据进行处理请求(例如提交表单或上传文件)。数据被包含在请求体中,POST请求可能会导致新的资源建立或已有资源修改

3

HEAD

类似于GET请求,只不过返回的响应中没有具体内容,用于获取报头

4

OPTIONS

允许客户端查看服务器的内容

5

PUT

从客户端向服务器传送的数据取代指定的文档内容

6

DELETE

请求服务器删除指定页面

7

TRACE

回显服务器收到的请求,主要用于测试或诊断

8

CONNECT

HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器

但是我们一般使用的方式主要是​​GET​​​和​​POST​​两种方式;

一般情况下都会遵循使用的原则。但是有的网站和服务器为了做反爬虫机制,也经常会不按常理出牌,有可能一个应该使用​​get​​​方法的请求就一定要改成​​post​​请求,这个要视情况而定,并不是固定的。

5、请求头常见参数

(1)请求数据

在http请求中,发起一个请求的时候,数据大致分成了三部分:

  • 数据放在​​url​​中;

python爬虫-02-http协议认识,以及python爬虫相关知识点认识_运维工程_02

  • 数据放在​​body​​中(在​​post​​请求中);
  • 数据放在head中;

python爬虫-02-http协议认识,以及python爬虫相关知识点认识_客户端_03

(2)请求头常见参数

  • ​​User-Agent​​​:浏览器名称。这个在网络爬虫中经常会被使用到。请求一个网页的时候,服务器通过这个参数就可以知道这个请求是由哪种浏览器发送的。如果我们是通过爬虫发送请求,那么我们的​​User-Agent​​​就是​​Python​​,这对于那些有反爬虫机制的网站来说,可以轻易的判断你这个请求是爬虫。因此我们要经常设置这个值为一些浏览器的值,来伪装我们的爬虫。
  • ​​Referer​​​:表明当前这个请求是从哪个​​url​​过来的。这个一般也可以用来做反爬虫技术。如果不是从指定页面过来的,那么就不做相关的响应。
  • ​​Cookie​​​:​​http​​​协议是无状态的。也就是同一个人发送了两次请求,服务器没有能力知道这两个请求是否来自同一个人。因此这时候就用​​cookie​​​来做标识。一般如果想要做登录后才能访问的网站,那么就需要发送​​cookie​​​信息了。且​​cookie​​有时效性,也就是过一段时间就过期了。

6、http常用响应状态码

这个是常态,但是不是固态,不排除有些网站不按常理出牌哈。

大致分为五类,如下图:

python爬虫-02-http协议认识,以及python爬虫相关知识点认识_客户端_04

细分的话如下:

状态码

英文描述

状态描述

100

Continue

继续。客户端应继续其请求

101

Switching Protocols

切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议

200

OK

请求成功。一般用于GET与POST请求

201

Created

已创建。成功请求并创建了新的资源

202

Accepted

已接受。已经接受请求,但未处理完成

203

Non-Authoritative Information

非授权信息。请求成功。但返回的meta信息不在原始的服务器,而是一个副本

204

No Content

无内容。服务器成功处理,但未返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档

205

Reset Content

重置内容。服务器处理成功,用户终端(例如:浏览器)应重置文档视图。可通过此返回码清除浏览器的表单域

206

Partial Content

部分内容。服务器成功处理了部分GET请求

300

Multiple Choices

多种选择。请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端(例如:浏览器)选择

301

Moved Permanently

永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替

302

Found

临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI

303

See Other

查看其它地址。与301类似。使用GET和POST请求查看

304

Not Modified

未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源

305

Use Proxy

使用代理。所请求的资源必须通过代理访问

306

Unused

已经被废弃的HTTP状态码

307

Temporary Redirect

临时重定向。与302类似。使用GET请求重定向

400

Bad Request

客户端请求的语法错误,服务器无法理解

401

Unauthorized

请求要求用户的身份认证

402

Payment Required

保留,将来使用

403

Forbidden

服务器理解请求客户端的请求,但是拒绝执行此请求

404

Not Found

服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面

405

Method Not Allowed

客户端请求中的方法被禁止

406

Not Acceptable

服务器无法根据客户端请求的内容特性完成请求

407

Proxy Authentication Required

请求要求代理的身份认证,与401类似,但请求者应当使用代理进行授权

408

Request Time-out

服务器等待客户端发送的请求时间过长,超时

414

Request-URI Too Large

请求的URI过长(URI通常为网址),服务器无法处理

500

Internal Server Error

服务器内部错误,无法完成请求

501

Not Implemented

服务器不支持请求的功能,无法完成请求

502

Bad Gateway

作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应

503

Service Unavailable

由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中

504

Gateway Time-out

充当网关或代理的服务器,未及时从远端服务器获取请求

505

HTTP Version not supported

服务器不支持请求的HTTP协议的版本,无法完成处理

至此,本文结束。

更多优质内容请转至VX公众号 “运维家” ,回复 “165” 查看。

------ “运维家” ,回复 “165” ------
------ “运维家” ,回复 “165” ------
------ “运维家” ,回复 “165” ------重庆安全运维工程师入行门槛低,运维监理工程师是做什么的,大连找工作运维工程师,系统运维工程师工作计划的编写,系统运维工程师学习课程,适合运维工程师的兼职,信息运维工程师绩效考核表,高级运维工程师薪资待遇,风电运维工程师连体工作服,运维工程师的sql面试题,it运维工程师问题,运维工程师应具备什么技能,运维工程师列常检测什么,国投电力初级运维工程师,运维工程师日常照片,华北电力运维工程师是做什么的,网络工程师辛苦吗电商运维工作,电气工程师运维月薪,运维工程师百度,运维工程师相关的书。​




网友评论