Python爬虫(二)--http基本原理(Python Crawler (2) Basic Principles of HTTP)

news2024/10/6 5:24:31

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。

推荐:Linux运维老纪的首页,持续学习,不断总结,共同进步,活到老学到老
全面总结 IT核心技术:系统基础、数据库、网路技术、系统安全、自动化运维、容器技术、监控工具、脚本编程、云计算、人工智能、运维开发、算法结构、物联网、JAVA Python语言等。
不同类型针对性训练,提升编程思维,剑指大厂非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。

1.http基本原理

1.1 URL

  URL(Uniform Resource Locator),即统一资源定位符,也就是我们说的网址,统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置
以及浏览器应该怎么处理它

1.2 超文本

  超文本:hypertext,浏览器里面看到的网页就是超文本解析而成, 其网页源代码是一系列html代码,如img表示图片,p指定段落

1.3 http原理

‌HTTP协议的原理‌涉及客户端与‌服务器之间的通信过程,主要通过请求和响应机制实现。HTTP是一个应用层协议,基于B/S架构,通常承载于TCP协议之上,并可以加密传输(通过HTTPS)。HTTP协议的工作流程包括以下几个关键步骤:‌12

  1. ‌建立连接‌:客户端(如Web浏览器)通过DNS解析服务器的域名得到IP地址,然后通过TCP/IP协议与服务器建立连接,默认端口为80(对于HTTPS,端口为443)。
  2. ‌发送请求‌:客户端向服务器发送一个HTTP请求,请求包含请求行、消息报头和请求正文。请求行包括请求方法(如GET、POST)、请求的URI和HTTP版本。
  3. ‌服务器响应‌:服务器接收到请求后,处理请求并生成响应。响应包括‌状态码、响应头和响应体。状态码用于指示请求是否成功以及任何错误信息。
  4. ‌关闭连接‌:在HTTP/1.0中,每次请求后连接会关闭,但在HTTP/1.1中引入了持久连接,允许多个请求通过同一个连接发送和接收,直到一方关闭连接。

HTTP是一个无状态的协议,这意味着每次请求都是独立的,服务器不会保存客户端的状态信息。为了实现状态管理,HTTP引入了‌Cookie和‌Session机制。Cookie由服务器发送到客户端并在后续请求中发送回服务器,用于识别用户。Session则是服务器端保存的状态信息,通过Session ID在Cookie中传递。

此外,HTTP头部包含了一系列键值对,用于传递响应信息,如Content-Type表示响应内容的类型,Content-Length表示响应内容的长度,Set-Cookie用于设置Cookie等。

综上所述,HTTP协议通过简单的请求-响应模型,实现了万维网上的数据传输和服务访问,是现代互联网通信的基础

   • http和https:访问资源需要的协议类型,还有其他的类型,ftp,sftp,smb等
   • http:hyper text transfer protocol,超文本传输协议,网络传输超文本数据到本地浏览器的传送协议,保证高效而准确的传送超文本文档
   • https : Hyper Text Transfer Protocol over Secure SocketLayer,以安全为目标的http通道,http下加入ssl层
   • 作用:建立一个信息安全通道来保证数据传输的安全,确认网站的真实性

1.4 http请求流程

   浏览器中输入url后,浏览器向网站所在服务器发送了一个请求,网站服务器接收请求,并对这个请求进行处理和解析,然后返回对应的响应,传回给浏览器,再通过浏览器解析出来

1.5 请求

  请求——可分为四部分内容:

   • 请求的网站(request url)
   • 请求方法(request method)
   • 请求头(request headers)
   • 请求体(request body)

1.6 请求方法

  主要分为getpost请求

 get请求:
   • 请求中的参数包含在url里面
   • 请求提交的数据最多只有1024字节
   • 百度中输入关键字,wd表示要搜索的关键字

  post请求:
   • 表单提交时候发起,用户登录
   • 数据以表单的形式传输,不会体现在url中 ✓ 请求提交的数据没有大小限制
   • 数据传输更安全(参数不会体现在url中)


1.7 请求头

  用来说明服务器要使用的附加信息,比较重要的信息有cookie(存储在用户本地终端上的数据),user-agent(请求从哪个地方发起的)
1.8 请求体

  一般承载的内容是post请求中的表单数据,对于get请求,请求体为空
1.9 响应

  由服务器返回给客户端,可以分为三部分: 响应状态码( response status code ) , 响应头 ( response headers), 响应体(response body)

1.91 响应码

  表示服务器的响应状态, 200代表服务器正常响应,404代表页面未找到,500代表服务器内部发生错误

  可以根据状态码来判断服务器的响应状态:

       常见的错误代码及错误原因

1.92 响应头

  包含了服务器对请求的应答信息,如content-type,server,set-cookis等
1.93 响应体  

爬虫请求后解析的内容就是响应体,响应的正文数据,比如请求网页时,响应体是html代码;请求一张图片时,响应体为图片的二进制数据 ; json数据等


2 网页基础

2.1 网页的组成

  HTML,CSS和JavaScript

  Html相当于骨架,JavaScript相当于肌肉,css相当于皮肤
  三者结合起来形成完善的网页

2.2 HTML

  超文本标记语言(hyper text markup language)

  HTML:结构,决定网页的结构和内容(是什么),head元素标记头部文件,用title素标记网页名称,用body元素标记网页主体,用table元素标记表格等等,段落用p标签表示,布局通过布局标签div嵌套组合合成

2.3 CSS

  层叠样式表(cascading stytle sheets)

  层叠指在html中引用了数个样式文件,并且样式发生冲突时候,浏览器能依据层叠顺序处理

  样式:

  设定网页的表现样式(什么样子)。将网页样式提取出来方便更改某一类元素的样式,通过style元素插入CSS代码,style元素放在head元素中。网页中文字的大小,颜色,元素间距,排列等

2.4 JavaScript(JS)

  Html和css只是实现静态信息,缺乏交互性。网页的交互和动画效果通过JavaScript实现 JavaScript通过单独的文件形式加载,后缀为.js,Html中通过script标签引入。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2191178.html

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

相关文章

TriLite完成A轮扩展融资:加速AR微型投影仪技术创新与市场拓展

近日,全球领先的AR微型投影仪开发商TriLite宣布成功完成A轮扩展融资,将A轮融资总额提升至超过2000万欧元。这一轮融资不仅彰显了资本市场对TriLite技术实力和市场潜力的高度认可,更为其后续在AR微型投影仪领域的技术研发、产品迭代以及市场拓展提供了坚实的资金保障。以下是…

力扣刷题 | 两数之和

目前主要分为三个专栏,后续还会添加: 专栏如下: C语言刷题解析 C语言系列文章 我的成长经历 感谢阅读! 初来乍到,如有错误请指出,感谢! 给定一个整数数组 nums 和…

C++ | Leetcode C++题解之第456题132模式

题目&#xff1a; 题解&#xff1a; class Solution { public:bool find132pattern(vector<int>& nums) {int n nums.size();vector<int> candidate_i {nums[0]};vector<int> candidate_j {nums[0]};for (int k 1; k < n; k) {auto it_i upper_…

Leetcode—416. 分割等和子集【中等】

2024每日刷题&#xff08;172&#xff09; Leetcode—416. 分割等和子集 C实现代码 class Solution { public:bool canPartition(vector<int>& nums) {int sum accumulate(nums.begin(), nums.end(), 0);if(sum % 2) {return false;}int m nums.size();int subSu…

自动售卖柜目标检测数据集 4880张 商品数据集 voc yolo

自动售货机商品检测数据集 名称 自动售货机商品检测数据集 (Automatic Vending Machine Product Detection Dataset) 规模 图像数量&#xff1a;4880张图像。类别&#xff1a;30种不同的商品类别。 数据划分 训练集 (Train)&#xff1a;通常占总数据的80%左右&#xff0c;…

【AI知识点】二项分布(Binomial Distribution)

二项分布&#xff08;Binomial Distribution&#xff09; 是概率论和统计学中描述独立重复的伯努利试验中成功次数的离散概率分布。它是基于多次独立的伯努利试验的扩展&#xff0c;用于描述在 n n n 次试验中发生成功的次数。 1. 二项分布的定义 二项分布用于描述在 n n n…

利用GPU进行训练

文章目录 一、GPU训练模型二、对比使用gpu和cpu进行训练所花费的时间三、GPU训练模型的第二种表达方式 一、GPU训练模型 GPU只能够训练三种变量&#xff0c;分别是&#xff1a; 网络模型 数据&#xff08;输入&#xff0c;标注targets&#xff09; 损失函数 使用方式是.cuda…

精品WordPress主题/响应式个人博客主题Kratos

Kratos 是一款专注于用户阅读体验的响应式 WordPress 主题&#xff0c;整体布局简洁大方&#xff0c;针对资源加载进行了优化。 Kratos主题基于Bootstrap和Font Awesome的WordPress一个干净&#xff0c;简单且响应迅速的博客主题&#xff0c;Vtrois创建和维护&#xff0c; 主…

rockylinux9安装软件报错

1、rocky linux9再安装软件的时候报错&#xff1a; [rootClient119 yum.repos.d]# yum -y install epel-release [rootClient119 yum.repos.d]# yum -y install libcgroup Extra Packages for Enterprise Linux 9 - x86_64 …

【MySQL 09】表的内外连接

目录 1.内连接 创建表&#xff08;案例准备&#xff09; 案例&#xff1a; 2.外连接 2.1左外连接 案例&#xff1a; 2.2右外连接 案例&#xff1a; 1.内连接 内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选,我们前面学习的查询都是内连接,也是在开发过…

什么是pip? -- Python 包管理工具

前言 不同的编程语言通常都有自己的包管理工具&#xff0c;这些工具旨在简化项目的依赖管理、构建过程和开发效率&#xff0c;同时促进代码的复用和共享。每个包管理工具都有其独特的特点和优势&#xff0c;开发者可以根据自己的编程语言和项目需求选择合适的包管理工具。 pip是…

R语言的下载、安装及环境配置(RstudioVSCode)

0x01 R语言篇 一、软件介绍 R for Windows是一个免费的用于统计计算和统计制图的优秀工具&#xff0c;是R语言开发工具。它拥有数据存储和处理系统、数组运算工具&#xff08;其向量、矩阵运算方面功能尤其强大&#xff09;、完整连贯的统计分析工具、优秀的统计制图等功能。…

Spring Cloud之OpenFeign的具体实践

1 基本概念 OpenFeign基于Feign框架开发&#xff0c;而Feign是Netflix开源的一个声明式Web服务客户端。OpenFeign通过定义接口、注解和动态代理等方式&#xff0c;将服务调用的过程封装起来&#xff0c;使得开发者只需要定义服务接口&#xff0c;而无需关心底层的HTTP请求和序列…

qt 使用svg 图标的使用

1. 添加模块 在cmakeList.txt 中添加svg模块 2. 使用示例 这里已给已初始化的按钮设置图标为例&#xff1a; int width 12;int height 12;QSvgRenderer *minRenderer new QSvgRenderer(QString(":/resources/icon/min_window.svg"));QPixmap pixmap(width, h…

CSS——属性值计算

CSS——属性值计算 今天来详细讲解一下 CSS的属性值计算过程&#xff0c;这是 CSS 的核心之一&#xff08;另一个是视觉可视化模型&#xff0c;个人理解&#xff0c;这个相对复杂&#xff0c;以后再讲&#xff09;。 基本概念 层叠样式表&#xff1a;Cascade Style Sheet&am…

【YOLO学习】YOLOv5口罩检测实战

文章目录 1. 环境配置2. 下载代码3. 安装库3.1 安装pytorch3.2 安装其他库 4. 测试5. 数据标注6. 模型训练7. 界面可视化 1. 环境配置 1. 先参考其他文章安装 Anaconda 或者 Miniconda&#xff0c;我安装的是 Miniconda。 2. 更换国内源&#xff0c;以加快速度 。可以参考下面这…

使用Buildpacks构建Docker镜像

## 使用Buildpacks构建Docker镜像 ![](../assets/运维手册-Buildpacks-Buildpacks.io.png) ### Buildpacks简介 与Dockerfile相比&#xff0c;Buildpacks为构建应用程序提供了更高层次的抽象。具体来说&#xff0c;Buildpacks&#xff1a; * 提供一个平衡的控制&#xff0c;…

Koa2项目实战2(路由管理、项目结构优化)

添加路由&#xff08;处理不同的URL请求&#xff09; 路由&#xff1a;根据不同的URL&#xff0c;调用对应的处理函数。 每一个接口服务&#xff0c;最核心的功能是&#xff1a;根据不同的URL请求&#xff0c;返回不同的数据。也就是调用不同的接口返回不同的数据。 在 Node…

1C++入门基础(一)

文章目录 什么是C?C的发展史C关键字(C98)命名空间命名空间的定义命名空间的使用 C中的输入和输出缺省参数缺省参数的概念缺省参数分类全缺省参数半缺省参数 函数重载函数重载的概念函数重载的原理(名字修饰) extern#1. 符号的声明与定义#1.1 变量的声明与定义#1.2 函数的声明和…

均值模板和二阶差分模板的频率响应

均值模板和二阶差分模板都是偶对称。实偶函数的傅里叶变换仍是实偶函数。 给个证明过程 实偶函数 一个函数 f ( x ) f(x) f(x) 被称为实偶函数&#xff0c;如果它满足以下条件&#xff1a; f ( − x ) f ( x ) f(-x) f(x) f(−x)f(x) 傅里叶变换 对于一个实偶函数 f (…