Python网络爬虫之HTTP原理

news2024/9/30 3:51:07

写爬虫之前,我们还需要了解一些基础知识,如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 选项卡即可看到当前
网页的源代码,这些源代码都是超文本,如图所示。

在这里插入图片描述
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或手机浏览器,服务器即要访问的网站所在的服务器。

✨请求
请求,由客户端向服务端发出,可以分为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.coloradmin.cn/o/429054.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

医学图像分割之MedNeXt

论文:MedNeXt: Transformer-driven Scaling of ConvNets for Medical Image Segmentation ConvNeXt网络是一种借鉴Transformer的思想进行了改进实现的全卷积网络,其通过全卷积网络和逆向残差瓶颈单元的设计,可以实现比较大的空间感受野。本文…

【MySQL】聚合查询

目录 1、前言 2、插入查询结果 3、聚合查询 3.1 聚合函数 3.1.1 count 3.1.2 sum 3.1.3 avg 3.1.4 max 和 min 4、GROUP BY 子句 5、HAVING 关键字 1、前言 前面的内容已经把基础的增删改查介绍的差不多了,也介绍了表的相关约束, 从本期开始…

windows将exe或者bat封装成系统服务进行管理

NSSM介绍 NSSM(the Non-Sucking Service Manager)是Windows环境下一款免安装的服务管理软件,它可以将应用封装成服务,使之像windows服务可以设置自动启动等。并且可以监控程序运行状态,程序异常中断后自动启动,实现守护进程的功能…

和利时:自主可控 安全高效

4月13—15日,由易派客电子商务有限公司、中国石油和石油化工设备工业协会、北京长城电子商务有限公司共同主办的2023第二届易派客工业品展览会在苏州国际博览中心成功召开。本次展会以“绿色智造融通赋能”为主题,杭州和利时自动化有限公司(简…

Cesium:Particle Systems粒子系统

官网文档,点击此处查看。 粒子系统简述 粒子系统是一种用于模拟复杂物理效果的图形学技术,它是一系列小图片的集合,当这些小图片被放在一起查看时,会形成一种更为模糊的对象,例如:火苗、烟、天气或者烟花。 粒子系统效果在电影和游中是十分普遍的。例如:飞机失…

Spark 之 解析json的复杂和嵌套数据结构

本文主要使用以下几种方法: 1,get_json_object():从一个json 字符串中根据指定的json 路径抽取一个json 对象 2,from_json():从一个json 字符串中按照指定的schema格式抽取出来作为DataFrame的列 3,to_j…

【洋桃一号板】STM32F103CBT6标准库函数驱动TM1640点亮数码管

一、今天介绍如何使用STM32F103CBT6驱动TM1640点亮数码管,硬件用的洋桃开发板,点亮后效果如下,六个数码管依次显示0.1.2.3.4.5.6.7 硬件原理图如下,只用到了单片机的两个IO口即可实现上图的效果,该开发板上用的是PA11…

chapter-3 -数据库数据模型

以下内容来源于MOOC学习—原课程请见:数据库原理与应用 考研复习 概述 关系及关系模式 笛卡尔积 定义在一组域上的有序对的集合, 域是一组具有相同类型的集合,比如自然数,长度小于n的字符串结合等【比如int age】 从n个域的每…

Linux工具make与makefile

Linux项目自动化构建工具-make/Makefile 目录Linux项目自动化构建工具-make/Makefile引言1、make && makefile2、make执行步骤2.1 依赖关系2.2 依赖方法3、项目清理4、伪目标 .PHONY5、文件的三个时间6、make的工作原理7、Linux下的第一个小程序认识缓冲区进度条①函数…

T5模型简单介绍

目录 一、概要 二、深入扩展 2.1 两个要素 2.2 预训练方法 一、概要 谷歌公司的研究人员提出的 T5(Text-to-Text Transfer Transformer,有5个T开头的单词,所以叫做T5)模型采用了一种与前述模型截然不同的策略:将不…

RUAS论文阅读笔记

这是CVPR2021的一篇暗光增强的论文 Retinex增强和去噪部分 第一部分的核心公式是一种retinex公式(用于暗图增强的retinex公式有几种类型,虽然本质一样但是对于各个分量的定义不一样):yx⊗tyx\otimes tyx⊗t,其中x是正…

Trie|并查集|堆|

目录 初始化 插入 查询 合并集合 连通块中点的数量 堆排序 模拟堆 Trie树是用来快速存储和查找字符串集合的数据结构 #include<iostream> using namespace std; const int N 100010; int son[N][26];//本题为小写因为字母&#xff0c;每个节点最多有26个子节点…

JUC编程之——synchronized的底层实现与分析

1 synchronized关键字 synchronized 是 Java 中的关键字&#xff0c;是一种同步锁(也是一种悲观锁)。它修饰的对象有以下几种&#xff1a; 作用于实例方法&#xff0c;当前实例加锁&#xff0c;进入同步代码前要获得当前实例的锁——对象锁&#xff1b;作用于代码块&#xff…

水文水利数据对接详解

数据对接 水雨情监测及视频监控系统需要与什么平台进行对接&#xff1f; 答&#xff1a;水雨情监测及视频监控系统由省统一接收的方式&#xff0c;数据接收中心设在***水利云。 2.水雨情数据接收中心有哪些组成部分&#xff1f; 答&#xff1a;水雨情数据接收中心主要由硬件…

pdf如何压缩变小,pdf压缩教程四招快速学

PDF是我们日常工作中经常使用的文件格式之一。这种文件格式方便易用&#xff0c;能够确保文件在传输和接收过程中不会出现错版等问题。为了方便发送&#xff0c;我们通常会将编辑好的内容转换为PDF格式。但是有时候文件过大&#xff0c;无法通过传输渠道发送怎么办&#xff1f;…

字节5年测试工程师对“测试开发”的理解

写在前面&#xff1a; 写这篇文章的目的是为了能够更好的帮助刚入职的新人了解这个岗位和自己的工作&#xff0c;也想谈谈自己工作一年来对这个领域的了解程度&#xff0c;做一个小小总结吧&#xff5e; 一、我理解的测试开发 测试开发与开发、测试的关系 以前在没有接触测试…

樱花树盛开的季节,我用简单的C代码绘制了一棵樱花树向她表白~『C/C++图形库EasyX』

文章目录&#x1f490;专栏导读&#x1f490;文章导读绘制一根线条绘制一个简易的树干优化树干&#xff0c;使其更加细致绘制樱花树增加随机树形与渐变色效果如何设置随机数进阶——通过鼠标点击来控制生成樱花树进阶——生成樱花树并展示生长过程&#x1f490;专栏导读 &#…

通过阿里云函数计算解决ChatGPT API的调用问题

ChatGPT系列文章 与其被ChatGPT取代&#xff0c;不如征服ChatGPT&#xff0c;做它的主人&#xff01; 文章目录ChatGPT系列文章前言命令行部署准备工作两行命令实现部署应用中心部署使用代理访问API总结前言 自2022年11月30日 OpenAI 发布 ChatGPT 以来&#xff0c;虽然时有唱…

最新版本VSCode配置Python、PyQt5、QtDesigner环境并创建一个ui界面测试

参考链接&#xff1a;最新版本VSCode配置Python、PyQt5、QtDesigner环境并创建一个ui界面测试 一、安装Python3 PyQt5所支持的python版本是从3.5开始的&#xff0c;因此安装的Python3版本必须大于3.5。 我安装的位置是C:\Python\Python38。 参见真小白入门Pyhton的安装 二、安…

图-文多模态,大模型,预训练

参考老师的无敌课程 多模态任务是指需要同时处理两种或多种不同类型的数据&#xff08;如图像、文本、音频等&#xff09;的任务。例如&#xff0c;图像描述&#xff08;image captioning&#xff09;就是一种典型的多模态任务&#xff0c;它需要根据给定的图像生成相应的文本描…