0

0

Python网络爬虫中HTTP协议的原理是什么?

WBOY

WBOY

发布时间:2023-04-20 22:01:23

|

1995人浏览过

|

来源于亿速云

转载

HTTP 基本原理

在本文中,我们会详细了解 http的基本原理,了解在浏览器中敲入url 到获取网页内容之间发生了什么。了解了这些内容,有助于我们进一步了解爬虫的基本原理。

URI和 URL

这里我们先了解一下URI和URL,URI的全称为Uniform Resource Identifier,即统―资源标志符,URL的全称为Universal Resource Locator,即统一资源定位符。

URL是URI的子集,也就是说每个URL都是URI,但不是每个URI都是 URL。那么,怎样的URI不是URL呢?URI还包括一个子类叫作 URN,它的全称为Universal Resource Name,即统―资源名称。URN 只命名资源而不指定如何定位资源,比如urn:isbn:0451450523指定了一本书的ISBN,可以唯一标识这本书,但是没有指定到哪里定位这本书,这就是URN。URL、URN和URI的关系。

但是在目前的互联网中,URN用得非常少,所以几乎所有的URI都是URL,一般的网页链接我们既可以称为URL,也可以称为URI,我个人习惯称为URL。

超文本

接下来,我们再了解一一个概念——超文本, 其英文名称叫作hypertext,我们在浏览器里看到的网
页就是超文本解析而成的,其网页源代码是一系列HTML代码,里面包含了-系列标签,比如img显
示图片,p指定显示段落等。浏览器解析这些标签后,便形成了我们平常看到的网页,而网页的源代码HTML就可以称作超文本。

立即学习Python免费学习笔记(深入)”;

例如,我们在Chrome浏览器里面打开任意一一个页面,如淘宝首页,右击任一地方并选择 “检查”
项(或者直接按快捷键F12),即可打开浏览器的开发者工具,这时在Elements 选项卡即可看到当前
网页的源代码,这些源代码都是超文本,如图所示。

Python网络爬虫之HTTP原理是什么

HTTP 和HTTPS

在百度的首页, URL的开头会有http 或https,这就是访问资源需要的协议类型。有时,我们还会看到ftp、sftp、 smb 开头的URL,它们都是协议类型。在爬虫中,我们抓取的页面通常就是http或https协议的,这里首先了解一下这两 个协议的含义。

HTTP的全称是Hyper Text Transfer Protocol, 中文名叫作超文本传输协议。HTTP协议是用于从网络传输超文本数据到本地浏览器的传送协议,它能保证高效而准确地传送超文本文档。HTTP由万维网协会( World Wide Web Consortium )和Internet工作小组IETF ( Internet Engineering Task Force )共同合作制定的规范,目前广泛使用的是HTTP1.1版本。

HTTPS的全称是Hyper Text Transfer Protocol over Secure Socket Layer,是以安全为目标的HTTP
通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,简称为HTTPS。

HTTPS的安全基础是SSL,因此通过它传输的内容都是经过SSL加密的,它的主要作用可以分
为两种。

  • 建立一个信息安全通道来保证数据传输的安全。

  • 确认网站的真实性,凡是使用了HTTPS的网站,都可以通过点击浏览器地址栏的锁头标志来查看网站认证之后的真实信息,也可以通过CA机构颁发的安全签章来查询。

 现在越来越多的网站和App都已经向HTTPS方向发展,例如:

苹果公司强制所有ioS App在2017年1月1日前全部改为使用HTTPS加密,否则App就无法在应用商店上架。谷歌从2017年1月推出的Chrome 56开始,对未进行HTTPS加密的网址链接亮出风险提示,即在地址栏的显著位置提醒用户“此网页不安全" 。腾讯微信小程序的官方需求文档要求后台使用HTTPS请求进行网络通信,不满足条件的域名和协议无法请求。

HTTP 请求过程

我们在浏览器中输人一一个URL,回车之后便会在浏览器中观察到页面内容。实际上,这个过程是

浏览器向网站所在的服务器发送了一个请求,网站服务器接收到这个请求后进行处理和解析,然后返回对应的响应,接着传回给浏览器。响应里包含了页面的源代码等内容,浏览器再对其进行解析,便将网页呈现了出来。

 此处客户端即代表我们自己的PC或手机浏览器,服务器即要访问的网站所在的服务器。

Kive
Kive

一站式AI图像生成和管理平台

下载
请求

请求,由客户端向服务端发出,可以分为4部分内容:请求方法( Request Method)、请求的网址
( Request URL )、请求头( Request Headers )、请求体( Request Body )。

  • 请求方法

常见的请求方法有两种: GET和POST。

在浏览器中直接输入URL并回车,这便发起了一个GET请求,请求的参数会直接包含到URL里。例如,在百度中搜索Python,这就是一一个GET请求,链接为htps://www baidu. com/,其中URL中包含了请求的参数信息,这里参数wd表示要搜寻的关键字。POST 请求大多在表单提交时发起。比如,对于一个登录表单,输人用户名和密码后,点击“登录”按钮,这通常会发起一个 POST请求,其数据通常以表单的形式传输,而不会体现在URL中。

GET和POST请求方法有如下区别:

  • GET请求中的参数包含在URL里面,数据可以在URL中看到,而POST请求的URL不会包含这些数据,数据都是通过表单形式传输的,会包含在请求体中。

  • GET请求提交的数据最多只有1024字节,而POST方式没有限制。

一般来说,登录时,需要提交用户名和密码,其中包含了敏感信息,使用GET方式请求的话,密码就会暴露在URL里面,造成密码泄露,所以这里最好以POST方式发送。上传文件时,由于文件内容比较大,也会选用POST方式。

我们平常遇到的绝大部分请求都是GET或POST请求,另外还有一些请求方法, 如GET、HEAD、
POST、PUT、 DELETE、OPTIONS、CONNECT、TRACE等。

  • 请求的网址

请求的网址,即统一资源定 位符URL,它可以唯一确定 我们想请求的资源。
  • 请求头

请求头,用来说明服务器要使用的附加信息,比较重要的信息有Cookie . Referer. User-Agent等。
  • 请求体

请求体一般承载的内容是 POST请求中的表单数据,而对于GET请求,请求体则为空。
响应

响应,由服务端返回给客户端,可以分为三部分:响应状态码( Response Status Code).响应头( Response Headers )和响应体( Response Body )。

  •  响应状态码

响应状态码表示服务器的响应状态,如200代表服务器正常响应,404代表页面未找到,500代表
服务器内部发生错误。在爬虫中,我们可以根据状态码来判断服务器响应状态,如状态码为200,则
证明成功返回数据,再进行进一步的处理, 否则直接忽略。
  • 响应头

响应头包含了服务器对请求的应答信息,如Content-Type、Server、 Set-Cookie 等。
  • 响应体

最重要的当属响应体的内容了。响应的正文数据都在响应体中,比如请求网页时,它的响应体
就是网页的HTML代码;请求- -张图片时 ,它的响应体就是图片的二进制数据。我们做爬虫请
求网页后,要解析的内容就是响应体.

相关文章

python速学教程(入门到精通)
python速学教程(入门到精通)

python怎么学习?python怎么入门?python在哪学?python怎么学才快?不用担心,这里为大家提供了python速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python开发工具
python开发工具

php中文网为大家提供各种python开发工具,好的开发工具,可帮助开发者攻克编程学习中的基础障碍,理解每一行源代码在程序执行时在计算机中的过程。php中文网还为大家带来python相关课程以及相关文章等内容,供大家免费下载使用。

769

2023.06.15

python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

661

2023.07.20

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

764

2023.07.25

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

659

2023.07.31

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

1345

2023.08.03

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

549

2023.08.04

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

579

2023.08.04

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

730

2023.08.11

Golang 性能分析与pprof调优实战
Golang 性能分析与pprof调优实战

本专题系统讲解 Golang 应用的性能分析与调优方法,重点覆盖 pprof 的使用方式,包括 CPU、内存、阻塞与 goroutine 分析,火焰图解读,常见性能瓶颈定位思路,以及在真实项目中进行针对性优化的实践技巧。通过案例讲解,帮助开发者掌握 用数据驱动的方式持续提升 Go 程序性能与稳定性。

5

2026.01.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 12.1万人学习

Django 教程
Django 教程

共28课时 | 3.4万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号