Python网络爬虫之HTTP原理

news/2024/7/19 12:27:52 标签: python, 爬虫, http
http://www.w3.org/2000/svg" style="display: none;">

爬虫之前,我们还需要了解一些基础知识,如HTTP原理、网页的基础知识、爬虫的基本原理、Cookies的基本原理等。本文中,我们就对这些基础知识做一个简单的总结。

🌟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就可以称作超文本。

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

https://img-blog.csdnimg.cn/8743023dad6a476abaf0b437ecb8e06b.png" alt="在这里插入图片描述" />
HTTP 和HTTPS
在百度的首页, URL的开头会有httphttps,这就是访问资源需要的协议类型。有时,我们还会看到ftp、sftp、 smb 开头的URL,它们都是协议类型。在爬虫中,我们抓取的页面通常就是httphttps协议的,这里首先了解一下这两 个协议的含义。

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或手机浏览器,服务器即要访问的网站所在的服务器。

✨请求
请求,由客户端向服务端发出,可以分为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 等。
响应体


http://www.niftyadmin.cn/n/236402.html

相关文章

找零问题1-最少硬币

文章目录 找零问题1-最少硬币程序设计程序分析找零问题1-最少硬币 【问题描述】 给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。(你可以认为硬币的数量是无限的) 【…

PyTorch 深度学习实用指南:6~8

原文:PyTorch Deep Learning Hands-On 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN 深度学习 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 不要担心自己的形象,只关心如何实现目…

TS WIKI 个人知识库软件

TS WIKI 个人知识库软件(VER: 0.1) TS WIKI 目标是做一个可以本地化部署,小型的,适合个人或小型团队的知识管理软件。 T(iny) S(mall) WIKI 软件界面 TS WIKI 功能说明 1、简化的软件依赖和安装 依赖的软件最简化。软件只使用 SQLITE 数据库&#xf…

消费回暖:别总想着“报复”,而该想想怎么“修复”

01 是报复性消费吗?「报复性消费」一词最早是在2020年武汉疫情解封之后被大家熟知。之后的三年里,各路机构总是预测“等到常态化防疫结束之后,必将迎来真正的报复性消费”,事实果真如此吗?A面:涨自去年年底…

【MySQL】复合索引和覆盖索引的区别和介绍

文章目录前言准备复合索引覆盖索引总结阅读本篇文章预计五分钟; 前言准备 我们先准备一张表和几个字段,方便介绍覆盖索引和复合索引。 创建一个user表,表中有id、name、school、age字段。 字段名字段类型idintnamevarcharschoolvarcharage…

云原生周刊:Kubernetes v1.27 发布 | 2023.4.17

开源项目推荐 Palaemon Palaemon 是一个开源开发工具,用于监控 Kubernetes 集群的健康状况和资源指标并分析内存不足 (OOMKill) 错误。 Gitkube Gitkube 是一种使用 git push 将 Docker 镜像构建和部署到 Kubernetes 上的工具。 经过简单的初始设置后&#xff…

oracle rac 安装文档

oracle rac 安装文档一、前期准备1.1 操作系统centos 7.4 *2台,要求双网卡1.2 主机名:oracle01,oracle021.3 数据库版本:oracle 11g rac1.4 空间要求:1.4.1 系统:(系统使用磁盘)1.4.…

硬盘未格式化如何处理(硬盘忽然未格式化如何处理)

将硬盘插入电脑的时候为什么会出现“未格式化”的提示框呢?遇到这个问题时又该怎么处理呢?别慌,下面小编就来给大家演示一下子解决未格式化这个问题的解决方法。 硬盘未格式化如何处理工具/软件:sayRecy 步骤1:先百度搜索并下载程序打开后&…