15158846557 在线咨询 在线咨询
15158846557 在线咨询
所在位置: 首页 > 营销资讯 > 网站运营 > 入门HTTP协议看这篇文章就够了 - 爬虫和Web开发必备!

入门HTTP协议看这篇文章就够了 - 爬虫和Web开发必备!

时间:2023-08-19 14:18:02 | 来源:网站运营

时间:2023-08-19 14:18:02 来源:网站运营

入门HTTP协议看这篇文章就够了 - 爬虫和Web开发必备!:HTTP对于爬虫是重中之重,对于学Web开发(前端或者后端)也是必备技能。本文涵盖了HTTP的必要知识点,把本文看透,基本够用了,然后再按需适当扩展就可以了。

另外,文末也有视频本教程的视频链接。

1. 原理介绍

爬虫就是用程序模拟浏览器的行为,发送请求给服务器,获取网页的内容,解析网页数据。

要学会爬虫,先要了解浏览器是如何和服务器交流的。浏览器通过HTTP协议和服务器交流。

2. HTTP协议简介

简介

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,主要用于网页的传输,现在也常应用网络API的开发(Restful API)。

HTTP是一个TCP/IP通信协议的最上层的协议之一(HTML 文件, 图片文件, 查询结果等)。TCP/IP协议有兴趣的可以自行学习,做Web开发的需要学习一下,对于爬虫不是必要内容。

以访问百度首页为例,可以看到网址的最前面就是http。

这里是https,你可以暂时忽略后面的s,https相对于http添加了数字证书加密功能,这不影响正常的爬虫。但写爬取的时候也要添加s,现在大部分网站都是https的。
了解https,请参考麦叔的文章,链接见底部第一篇。

基本工作原理

HTTP是浏览器或者其他客户端(如手机App)和网站服务器之间沟通的协议。

浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。

常用的Web服务器有:NginxApacheIIS服务器(微软的产品)等。

Web服务器接收到的请求后,向客户端发送响应信息。

HTTP默认端口号为80,但是你也可以改为8080或者其他端口。

HTTP三个要点

3. chrome浏览器和开发者工具

这个课程我们要使用chrome浏览器和它自带的开发者工具。

如果你还没有安装chrome浏览器,请下载和安装Chrome浏览器,麦叔高速镜像下载地址:

https://blog.qingke.me/post/10

我们可以使用chrome来查看http的请求信息,基本操作步骤如下:




4. HTTP的消息结构

主要流程和概念

请求和响应例子

客户端请求:

GET /hello.txt HTTP/1.1User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3Host: www.example.comAccept-Language: en, mi服务端响应:

HTTP/1.1 200 OKDate: Mon, 27 Jul 2009 12:28:53 GMTServer: ApacheLast-Modified: Wed, 22 Jul 2009 19:15:56 GMTETag: "34aa387-d-1568eb00"Accept-Ranges: bytesContent-Length: 51Vary: Accept-EncodingContent-Type: text/plain响应内容:

Hello World! My payload includes a trailing CRLF.

一个很好用看请求的网站 http://httpbin.org/get

通过这个网站可以更简单的查看请求的详细信息。

可以通过Python代码模拟各种请求参数和header,发送给这个网站,再来验证发送的是否正确。

5. 完整的网页请求过程

注意你看到一个网页,通常是分多次请求的,一般的过程为:

所以在chrome中可以看到很多个请求。如下图所示:

这种特点给爬虫带来困难:

解决这个问题办法通常有两个:

6. 请求

1) 请求行

下面例子中的第一行就是请求行,它包含几个关键信息:

GET /hello.txt HTTP/1.1User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3Host: www.example.comAccept-Language: en, mi

2) 请求方法

根据 HTTP 标准,HTTP 请求可以使用多种请求方法,这些方法表示这个请求要做什么。

HTTP1.0 定义了三种请求方法:GET, POST 和 HEAD方法。

HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。

最常用的请求方法是:

这是最基本应该掌握的两个点。下面是完整的HTTP请求方法。

序号方法描述

3) 请求参数

GET请求的参数

GET 请求的参数都是放在URL中的,网页看见:

请求参数是以键值对的形式出现,一般形式为:

举例:https://www.example.com/page1?参数1=参数1的值&参数2=参数2的值

看一下,上面的截图中有哪些参数,它们的值分别是什么?

POST请求的参数

格式举例:

GET /hello.txt HTTP/1.1User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3Host: www.example.comAccept-Language: en, mi{'name':'麦叔', '特征':'帅','坐标':'一个美丽的城市'}

4) 请求头

这部分内容非常重要,这是爬虫的关键技术之一,因为服务器通常通过请求头来:

下面是一个请求头列表,其中最重要的几个是:

Header解释示例

7. 响应

1) 状态码

当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。

HTTP状态码的英文为HTTP Status Code。

下面是常见的HTTP状态码:

HTTP状态码由三个数字组成,第一个数字定义了状态码的类型,后两个数字表示具体的状态。HTTP状态码共分为5种类型:

分类分类描述
HTTP状态码列表:

状态码状态码英文名称中文描述

2) 响应头

HTTP响应头包含了网页的重要描述信息,比如网页的格式,网页的过期时间等。

注意下面的Set-Cookie,它会设置网页的Cookie,在后面的请求中发送给服务器端,用来做身份判定或者反爬。

应答头说明

3) 响应内容和content type

我们最常见的网页的内容格式为:

其实除此之外,还有图片,样式表,JavaScript等。

Content-Type就表示了网页的内容类型,它告诉浏览器文件类型,网页编码,帮助浏览器决定将以什么形式、什么编码读取这个文件。

Content-Type 标头告诉客户端实际返回的内容的内容类型。

语法格式:

Content-Type: text/html; charset=utf-8Content-Type: multipart/form-data; boundary=something实例:

常见的媒体格式类型如下:

以application开头的媒体格式类型:

另外一种常见的媒体格式是上传文件之时使用的:

看视频

配套视频在B站,搜索“麦叔编程”,不要吝啬你的三连。

我是麦叔,带你学编程,陪你走职场的路。

关键词:爬虫,协议,文章,入门

74
73
25
news

版权所有© 亿企邦 1997-2025 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭