〖Python网络爬虫实战①〗- HTTP原理

news2024/11/22 13:24:49
  • 订阅:新手可以订阅我的其他专栏。免费阶段订阅量1000+

                python项目实战

                Python编程基础教程系列(零基础小白搬砖逆袭)

  • 说明:本专栏持续更新中,目前专栏免费订阅,在转为付费专栏前订阅本专栏的,可以免费订阅付费专栏,可报销(名额有限,先到先得)
  • 作者:爱吃饼干的小白鼠。Python领域优质创作者,2022年度博客新星top100入围,荣获多家平台专家称号。

 最近更新

〖Python网络爬虫实战①〗- HTTP原理


⭐️爬虫基础

在写爬虫之前,我们还需要了解一些基础知识,如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 )。

  1. 响应状态码
    响应状态码表示服务器的响应状态,如200代表服务器正常响应,404代表页面未找到,500代表
    服务器内部发生错误。在爬虫中,我们可以根据状态码来判断服务器响应状态,如状态码为200,则
    证明成功返回数据,再进行进一步的处理, 否则直接忽略。
    
    
  2. 响应头
    响应头包含了服务器对请求的应答信息,如Content-Type、Server、 Set-Cookie 等。
  3. 响应体
    最重要的当属响应体的内容了。响应的正文数据都在响应体中,比如请求网页时,它的响应体
    就是网页的HTML代码;请求- -张图片时 ,它的响应体就是图片的二进制数据。我们做爬虫请
    求网页后,要解析的内容就是响应体.

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

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

相关文章

道路病害识别领域创新产品RADSDS系统让道路检测更高效更实用

自从我国公路总里程数居世界第一,道路养护成为交通运维工作的重要环节。公路养护维修工作的开展,离不开对公路客观状况的检测。以往,我国依靠人工步行完成这项工作,不但干扰公路上车辆的正常通行,对检测人员安全不利&a…

【Linux】来写一个udp的服务端+客户端

来写一个udp的代码 1.socket编程接口 // 创建 socket 文件描述符 (TCP/UDP, 客户端 服务器) int socket(int domain, int type, int protocol); // 绑定端口号 (TCP/UDP, 服务器) int bind(int socket, const struct sockaddr *address,socklen_t address_len); // 开始…

个人邮箱与企业邮箱的区别有哪些?如何选择?

很多用户不了解企业邮箱,认为使用个人邮箱完全可以满足需求,其实这都是错误的观点,企业邮箱不同于个人邮箱,企业邮箱更适于商务应用的邮箱。今天就简单的做个对比。 个人邮箱与企业邮箱的区别: 1、企业形象 企业邮箱&…

STC单片机DS1307+ssd1306 oled时钟显示

STC单片机DS1307+ssd1306 oled时钟显示 📌相关篇《STC单片机DS1302+ssd1306 oled时钟显示》📍《STC单片机对DS1307读写操作》✨效果演示: 🌿实验对象:STC12C5A60S2🌿屏幕型号:I2C ssd1306 0.96“ oled🌿晶振频率:11.059MHz🌿串口波特率:9600📜串口打印读取信…

rk3568 点亮HDMI

rk3568 Android11/12 适配HDMI HDMI(High-Definition Multimedia Interface)是一种数字化音视频接口标准,用于连接高清电视、电脑、游戏机、蓝光播放器等设备。它是由HDMI联盟(HDMI Licensing, LLC)制定的&#xff0c…

奥威BI数据可视化大屏分享|多场景、多风格

数据可视化大屏一般应用在品牌推广展示、商务交流、数据分析决策、数据监控等场景,由此催生出各种不同风格的BI数据可视化大屏设计。下面就从奥威BI软件的BI报表模板中截取几个有着不同风格,起着不同作用的BI数据可视化大屏报表,一起来了解一…

【Transformer系列(3)】 《Attention Is All You Need》论文超详细解读(翻译+精读)

前言 哒哒~时隔好久终于继续出论文带读了,这次回归当然要出一手王炸呀——没错,今天我们要一起学习的就是传说中的Transformer!在2021年Transformer一经论文《Attention is All You Need》提出,就如龙卷风一般震惊学术界&#xf…

关于ROS机器人-文心一言和CatGPT怎么看-

交流截图: 文字版本如下(W-文心;C-猿如意): 如何通过蓝桥云课学习ROS机器人? W: 如果你想通过蓝桥云课学习ROS机器人,可以按照以下步骤进行: 确认ROS机器人的版本和教…

【记录】笔记本新加SSD,重装系统win10,再装双系统ubuntu18.04

记录一下,希望下次装系统可以来的晚一点一、前言二、换SSD三、装Windows1.安装系统2.删除多余系统3.遇到问题:无法关机4.改注册表,开不开机,黑屏有鼠标三、装ubuntu1.安装完,设置root2.更新源3.时间设置4.win和ubuntu共…

大语言模型及其应用

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl 机器学习 机器学习(Machine Learning,ML)是指从数据中自动学习规律和模式,并利用这些规律和模式,在新的数据中完成…

nssctf web 入门(6)

这里通过nssctf的题单web安全入门来写,会按照题单详细解释每题。题单在NSSCTF中。 想入门ctfweb的可以看这个系列,之后会一直出这个题单的解析,题目一共有28题,打算写10篇。 目录 [SWPUCTF 2021 新生赛]caidao [SWPUCTF 2021 新…

力扣题库刷题笔记64-最小路径和

1、题目如下: 2、个人Python代码实现: 以上代码主要是照抄题解,根据调试bug了解每一步的逻辑,然后注释利于读懂本题,写本篇文章的目的在于初步了解动态规划。 本题的逻辑主要如下: a、列表中每个数字代表当…

【Redis笔记03】Redis运行环境之Cluster集群模式

这篇文章,主要介绍Redis运行环境之Cluster集群模式。 目录 一、Cluster集群模式 1.1、集群模式原理 (1)普通集群 (2)什么是分片??? (3)如何分片存储&…

基于springboot的音乐网站的设计与实现(带论文)

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问…

【OCR】CTC loss原理

1 CTC loss出现的背景 在图像文本识别、语言识别的应用中,所面临的一个问题是神经网络输出与ground truth的长度不一致,这样一来,loss就会很难计算,举个例子来讲,如果网络的输出是”-sst-aa-tt-e’, 而其ground truth…

JVM:并发的可达性分析

当前主流编程语言的垃圾收集器基本上都是依靠可达性分析算法来判定对象是否存活的,可达性分析算法理论上要求全过程都基于一个能保障一致性的快照中才能够进行分析,这意味着必须全程冻结用户线程的运行。 在根节点枚举这个步骤中,由于 GC Ro…

0303Kruskal算法和小结-最小生成树-图-数据结构和算法(Java)

1 算法概述 定义。按照边的权重顺序(从小到大),将边加入最小生成树中。加入的边不会与已经加入的边构成环,知道树中含有V-1条边为主。这些黑色的边逐渐由一片森林合并为一棵树,也就是最小生成树。这种计算方法被称为Kr…

Redis Lua沙盒绕过命令执行(CVE-2022-0543)

一、描述 影响范围:Debian系得linux发行版本Ubuntu Debian系得linux发行版本 其并非Redis本身漏洞,形成原因在于系统补丁加载了一些redis源码注释了的代码 揭露时间:2022.3.8 二、原理 redis在用户连接后可以通过eval命令执行Lua脚本&#x…

GAN网络系列博客(三):不受坐标限制的GAN(StyleGAN3)

目录 1. 概述 2. 连续信号分析 2.1 等变网络层 3. 具体实现 3.1 傅里叶特征和基础简化 3.2 根据连续插值进行的步骤重建 4.实验 总结 Reference 关于StyleGAN系列博客的收尾之作,StyleGAN3已经鸽了太久了。说实话,前两篇StyleGAN说的什么内容&#xff0…

Web 攻防之业务安全:账号安全案例总结.

Web 攻防之业务安全:账号安全案例总结 业务安全是指保护业务系统免受安全威胁的措施或手段。广义的业务安全应包括业务运行的软硬件平台(操作系统、数据库,中间件等)、业务系统自身(软件或设备)、业务所提供…