【第一节】Python爬虫基础-HTTP基本原理
目录
前言
一、URI和URL是什么
二、什么是超文本
三、HTTP和HTTPS的区别
四、HTTP请求过程
五、请求
六、响应
前言
在着手开发爬虫程序之前,我们需要先掌握一些基础概念。本节将详细讲解HTTP的基本工作原理,重点分析从浏览器输入网址到获取网页内容的全过程。理解这些知识对后续掌握爬虫原理具有重要意义。
一、URI和URL是什么
首先需要明确URI和URL的概念。URI全称为统一资源标志符(Uniform Resource Identifier);URL全称为统一资源定位符(Universal Resource Locator)。
举例说明,https://img-home.csdnimg.cn/images/20201124032511.png 是csdn网站图标地址,它既是URL也是URI。这个链接明确指出了访问该图标资源的具体方式,包括使用的https协议、根目录"/"路径以及资源名称20201124032511.png。通过这样的链接,我们就能在互联网上准确定位到目标资源,这正是URL/URI的核心功能。
需要说明的是,URL实际上是URI的一个子集。也就是说,所有URL都属于URI,但并非所有URI都是URL。那么什么样的URI不属于URL呢?URI还有一个子类别叫URN(统一资源名称,Universal Resource Name)。URN仅对资源进行命名而不提供定位信息,例如urn:isbn:0451450523这个ISBN编号可以唯一标识一本书,但没有说明在哪里能找到这本书。URL、URN和URI之间的关系可以通过下图直观展示。
不过在当前的互联网环境中,URN的使用非常罕见,因此绝大多数URI实际上都是URL。日常使用的网页链接,既可以称为URL也可以称为URI,个人更习惯使用URL这个称呼。
二、什么是超文本
接下来介绍超文本(hypertext)的概念。我们在浏览器中看到的网页,实际上就是由超文本解析呈现的。网页源代码由HTML代码构成,包含各种标签元素,比如显示图片的img标签、定义段落的p标签等。浏览器解析这些标签后,就形成了我们日常浏览的网页界面,而这些HTML源代码就是所谓的超文本。
实际操作中,以淘宝首页为例,在Chrome浏览器中打开页面后,右键点击选择"检查"选项(或直接按F12键),即可调出开发者工具。在Elements标签页中,可以看到当前网页的源代码,这些代码都属于超文本范畴,如下图所示。
三、HTTP和HTTPS的区别
观察淘宝首页https://www.taobao.com/的URL开头部分,可以看到http或https前缀,这表示访问资源所使用的协议类型。除此之外,我们还可能遇到以ftp、sftp、smb等开头的URL,它们也代表不同的协议类型。在爬虫工作中,主要处理的是基于http或https协议的页面。下面重点介绍这两种协议。
HTTP全称为超文本传输协议(Hyper Text Transfer Protocol),主要用于将超文本数据从网络传输到本地浏览器,确保文档能够高效准确地传输。该协议由万维网协会(World Wide Web Consortium)和互联网工程任务组(IETF)共同制定,目前普遍使用的是HTTP1.1版本。
HTTPS全称是安全超文本传输协议(Hyper Text Transfer Protocol over Secure Socket Layer),简单理解就是在HTTP基础上增加了SSL安全层。HTTPS的安全基础是SSL加密,所有通过它传输的数据都会经过加密处理。其主要功能包括:建立安全的信息传输通道确保数据安全;验证网站的真实性。使用HTTPS的网站,用户可以通过点击浏览器地址栏的锁形图标查看网站认证信息,也可以通过CA机构颁发的安全签章进行验证。近年来,越来越多的网站和应用都转向使用HTTPS协议,例如:
(1)苹果公司要求所有iOS应用在2017年1月1日前必须改用HTTPS加密,否则无法上架App Store。
(2)谷歌从2017年1月发布的Chrome56版本开始,会对未使用HTTPS加密的网站显示"不安全"警告。
(3)微信小程序开发规范要求后台必须使用HTTPS进行网络通信,不符合要求的域名和协议将无法发起请求。
需要注意的是,有些网站虽然使用了HTTPS协议,但浏览器仍会提示不安全。例如很早以前访问12306官网https://www.12306.cn/时,Chrome浏览器会显示"您的连接不是私密连接"的警告(如下图所示)。
这是因为12306的CA证书是由中国铁道部自行签发的,以前没有得到CA机构的信任,导致证书验证失败,现在应该没啥问题了。但实际上数据传输仍然是经过SSL加密的。在爬取这类网站时,需要设置忽略证书选项,否则会出现SSL连接错误。
四、HTTP请求过程
当我们在浏览器地址栏输入URL并回车后,就能看到网页内容。实际上这个过程包含了多个步骤:浏览器向网站服务器发送请求,服务器接收并处理请求后返回响应,响应中包含网页源代码等内容,浏览器解析后最终呈现网页界面。这个过程的基本模型如下图所示。
在这个模型中,客户端指的是用户使用的浏览器(PC端或移动端),服务器则是托管目标网站的服务器。
为了更直观地观察这个过程,我们可以使用Chrome浏览器的开发者工具中的Network面板。它能完整记录访问网页时发生的所有网络请求和响应。具体操作方法是:打开Chrome浏览器,右键选择"检查"调出开发者工具,访问百度首页http://www.baidu.com/,在Network面板中可以看到一系列请求记录,每个记录代表一次完整的请求-响应过程,如下图所示。
以第一个请求(www.baidu.com)为例,各列信息含义如下:
- Name:请求名称,通常取自URL的最后部分。
- Status:响应状态码,200表示请求成功。
- Type:请求的文档类型,document表示请求的是HTML文档。
- Initiator:标记请求的发起来源。
- Size:从服务器下载的资源大小,若从缓存获取则显示from cache。
- Time:从发起请求到接收响应所花费的总时间。
- Waterfall:以瀑布流形式可视化展示请求过程。
点击具体条目可以查看详细信息(如下图所示):
General部分包含Request URL(请求地址)、Request Method(请求方法)、Status Code(状态码)、Remote Address(服务器地址和端口)以及Referrer Policy(来源策略)。下方还分别列出了Response Headers(响应头)和Request Headers(请求头)。请求头包含浏览器标识、Cookies、Host等重要信息,服务器通过这些信息判断请求的合法性。响应头则包含服务器类型、文档类型、日期等信息,浏览器接收后会据此解析响应内容。
下面我们分别详细介绍请求和响应的组成要素。
五、请求
客户端向服务器发送的请求包含四个主要部分:请求方法(Request Method)、请求地址(Request URL)、请求头(Request Headers)和请求体(Request Body)。
1. 请求方法
最常用的请求方法有GET和POST两种。
在浏览器地址栏直接输入URL并回车,就是发起GET请求,请求参数会直接包含在URL中。例如在百度搜索"Python"时,URL为https://www.baidu.com/s?wd=Python,其中wd参数就是搜索关键词。POST请求则多用于表单提交,比如登录时输入用户名和密码后点击"登录"按钮,通常会发起POST请求,数据以表单形式传输而不显示在URL中。
GET和POST的主要区别在于:
- GET请求参数暴露在URL中,POST请求参数包含在请求体内。
- GET请求有长度限制(通常1024字节),POST请求没有这个限制。
由于安全性考虑,涉及敏感信息(如密码)的操作建议使用POST方法。文件上传等大数据量传输也适合使用POST方法。
除了GET和POST,HTTP协议还定义了其他请求方法,如下表所示:
参考来源:http://www.runoob.com/http/http-methods.html
2. 请求地址
请求地址就是URL,用于唯一标识要请求的资源。
3. 请求头
请求头包含附加信息,重要字段包括:
- Accept:客户端可接受的响应类型。
- Accept-Language:客户端接受的语言类型。
- Accept-Encoding:客户端接受的内容编码方式。
- Host:请求的目标主机和端口(HTTP1.1必须包含)。
- Cookie:存储在用户本地的会话信息,用于维持登录状态等。
- Referer:标识请求来源页面。
- User-Agent:客户端浏览器和系统信息(爬虫需要合理设置)。
- Content-Type:请求内容的媒体类型(MIME类型),常见值包括:
- text/html:HTML文档
- image/gif:GIF图片
- application/json:JSON数据
完整对应关系参考:http://tool.oschina.net/commons
请求头是爬虫开发中需要重点处理的部分,大多数情况下都需要进行适当设置。
4. 请求体
POST请求的表单数据通常放在请求体中,GET请求的请求体为空。以百度登录为例(如下图所示),在提交登录表单时,用户名和密码会以表单数据形式放在请求体中。
此时请求头中的Content-Type需要设置为application/x-www-form-urlencoded。不同的Content-Type对应不同的数据提交方式,如下表所示:
在编写爬虫时,构造POST请求必须正确设置Content-Type,否则可能导致服务器无法正确处理请求。
六、响应
服务器返回的响应包含三个主要部分:状态码(Response Status Code)、响应头(Response Headers)和响应体(Response Body)。
1. 状态码
状态码表示请求的处理结果,常见的有:
- 200:请求成功
- 404:页面不存在
- 500:服务器内部错误
爬虫程序可以根据状态码判断是否继续处理响应内容。完整的状态码说明如下表:
更详细的状态码如下:
2. 响应头
重要响应头字段包括:
- Date:响应生成时间。
- Last-Modified:资源最后修改时间。
- Content-Encoding:内容编码方式。
- Server**:服务器软件信息。
- Content-Type:响应体数据类型。
- Set-Cookie:设置客户端Cookie。
- Expires:响应过期时间,用于缓存控制。
3. 响应体
响应体包含实际的响应内容。对于网页请求来说,响应体就是HTML源代码;对于图片请求,则是图片二进制数据。爬虫程序主要处理的就是响应体内容。
在开发者工具中点击"Preview"可以查看格式化后的响应内容,预览的内容可以右键查看源代码,这也是爬虫需要解析的目标数据。
本节详细讲解了HTTP的基本原理,包括请求响应过程、URL/URI、超文本、HTTP/HTTPS协议等核心概念。这些知识是后续网页分析的基础,需要重点掌握。
参考学习书籍:Python 3网络爬虫开发实战
相关文章:
【第一节】Python爬虫基础-HTTP基本原理
目录 前言 一、URI和URL是什么 二、什么是超文本 三、HTTP和HTTPS的区别 四、HTTP请求过程 五、请求 六、响应 前言 在着手开发爬虫程序之前,我们需要先掌握一些基础概念。本节将详细讲解HTTP的基本工作原理,重点分析从浏览器输入网址到获取网页内…...
docker打包使用有头模式playwright
1.打包镜像 创建Dockerfile文件如下 # playywright 官方镜像 FROM mcr.microsoft.com/playwright:v1.37.0-jammy# 设置非交互式环境变量和时区 ENV DEBIAN_FRONTENDnoninteractive ENV TZEtc/UTC# 安装 Python 3.9 和 pip(修复时区阻塞问题) RUN apt-g…...
VuePress 和 Docusaurus的对比
VuePress 和 Docusaurus 是两个流行的现代静态网站生成器 vuepress:首页 | VuePress Docusaurus:Docusaurus 博客 | Docusaurus中文文档 | Docusaurus中文网 一、技术栈和设计理念 VuePress 技术栈:基于Vue.js,专为技术文档设计,…...
JAVA数据库增删改查
格式 Main.java(测试类) package com.example;import com.example.dao.UserDao; import com.example.model.User;public class Main {public static void main(String[] args) {UserDao userDao new UserDao();// 测试添加用户System.out.println(" 添加用户 ");Us…...
MSTP多域生成树
协议信息 MSTP 兼容 STP 和 RSTP,既可以快速收敛,又提供了数据转发的多个冗余路径,在数据转发过程中实现 VLAN 数据的负载均衡。 MSTP 可以将一个或多个 VLAN 映射到一个 Instance(实例)(一个或多个 VLAN…...
HashMap 在 JDK 1.7 和 JDK 1.8 有什么区别
HashMap 在 JDK 1.7 和 JDK 1.8 中的实现存在显著差异,主要体现在以下几个方面: 1. 数据结构的变化 • JDK 1.7:HashMap 的底层数据结构是数组 单向链表。当哈希冲突发生时,新的元素会插入到链表的头部(头插法&#…...
Mysql忽略大小写
🚀欢迎来到我的【Mysql】专栏🚀 🙋我是小蜗,一名在职牛马。🐒我的博客主页 ➡️ ➡️ 小蜗向前冲的主页🙏🙏欢迎大家的关注,你们的关注是我创作的最大动力🙏🙏在 MySQL 中取消大小写区分主要涉及以下两个层面的配置,具体操作如下: 一、表名大…...
基于TradingView和CTPBee的自动化期货交易系统实现
引言 在量化交易领域,TradingView因其强大的技术分析工具和丰富的指标库而广受欢迎,但是其不支持国内期货自动化交易,CTPBee则是一个优秀的国产Python期货交易接口。本文将介绍如何将两者结合,实现一个完整的自动化交易系统。 本…...
昇腾CANN算子共建仓CANN-Ops正式上线Gitee,首批算子已合入
在人工智能技术呈指数级发展的今天,AI创新已走向更底层的算法创新,以DeepSeek为例,通过MoE模型架构和底层算法创新,不仅获取极佳的模型性能,又更大程度释放硬件性能,降低硬件使用成本。 算子,作…...
基于PyQt5的自动化任务管理软件:高效、智能的任务调度与执行管理
基于PyQt5的自动化任务管理软件:高效、智能的任务调度与执行管理 相关资源文件已经打包成EXE文件,可双击直接运行程序,且文章末尾已附上相关源码,以供大家学习交流,博主主页还有更多Python相关程序案例,秉着…...
Pycharm(八):字符串切片
一、字符串分片介绍 对操作的对象截取其中一部分的操作,比如想要获取字符串“888666qq.com前面的qq号的时候就可以用切片。 字符串、列表、元组都支持切片操作。 语法:字符串变量名 [起始:结束:步长] 口诀:切片其实很简单,只顾头来…...
C++编程学习笔记:函数相关特性、引用与编译流程
目录 一、函数的缺省参数 (一)全缺省参数 (二)半缺省参数 二、函数重载 (一)参数类型不同 (二)参数个数不同 (三)参数类型顺序不同 三、引用相关问题…...
Nginx 配置 HTTPS 与 WSS 完整指南
Nginx 配置 HTTPS 与 WSS 完整指南 本教程将手把手教你如何为网站配置 HTTPS 加密访问,并通过反向代理实现安全的 WebSocket(WSS)通信。以 https://www.zhegepai.cn 域名为例,完整流程约需 30 分钟完成。 一、前置准备 1.1 域名…...
链表基本操作
文章目录 1、单链表1.1 链表的创建1.2 链表的遍历1.3 链表的删除1.4 链表的插入1.5 链表和数组 2、双向链表2.1 双链表的创建2.2 双链表的删除2.3 双链表的插入2.4 双向循环链表2.5 双链表优缺点 1、单链表 链表是一种物理存储单元上非连续、非顺序的存储结构,插入…...
【huggingface 数据下载】ssh / https 不同的下载流程,hf 镜像下载注意事项
ssh 下载流程 在 linux 服务器上生成 ssh key将 pub key 放入 huggingface 的 setting 中通过 git lfs install 然后 git clone githf.co … 来下载数据 遇到的问题 一直卡在 Updating files 后 卡住的可能原因: 系统当前限制了允许监视的最大文件数࿱…...
简单版CentOS7配置haproxy
一、实验步骤 1、自行下载pes的tar包 然后解压到家目录下 tar -xzvf pes.tar.gz 2、创建一个目录 mkdir docker-compose-pes-lb2 3、在这个目录下写两个文件docker-compose.yml和haproxy.cfg docker-compose.yml version: 3 services: db: image: mysql:5.7.44 container…...
leetcode146.LRU缓存
思路源自 【面试高频】146. LRU 缓存 采用哈希表双向链表 put一个键值对时,采用头插法将缓存块置于等级较高的位置,如果put数量超出限制,那么就将尾部的缓存块删除,以此达到置换的一个效果 get一个键值对也是同样的思路…...
SpringIoC和DI
文章目录 OCP开闭原则DIP(依赖倒置原则)IOC(控制反转)依赖注入DI基于XML配置Beanset注入构造注入 使用注解存储beanController方法注解Bean扫描路径依赖注入三种注入方式优缺点分析 引入 当我们写了一个程序,遵循SpringMVC三层架构,表现层调用业务逻辑层…...
vue 路由
目录 一、路由的使用 二、声明式导航 2.1 声明式导航 2.2 声明式导航路由传参 2.2.1.字符串写法 2.2.2.对象写法 2.2.3 query 传参和 param 传参总结 2.3 命名路由 2.4 可选操作符 2.5 props 参数 三、编程式导航 3.1 replace 和 push 跳转…...
JAVA常见的 JVM 参数及其典型默认值
在 Java 线上应用中,JVM 参数的默认值取决于具体的 JVM 实现(如 Oracle JDK、OpenJDK、Zulu 等)、版本(如 Java 8、11、17 等)以及运行环境(物理机、容器等)。以下是常见的 JVM 参数及其典型默认…...
文件压缩与解压(zip4j)
maven依赖 <dependency><groupId>net.lingala.zip4j</groupId><artifactId>zip4j</artifactId><version>2.11.5</version></dependency>示例 //参数配置ZipParameters parameters new ZipParameters();parameters.setCompres…...
【操作系统】查内存泄漏方法
【操作系统】查内存泄漏方法 1. 通用检测方法1.1 代码审查1.2 运行时监测 2.Linux平台检测工具2.1 Valgrind工具套件2.2 AddressSanitizer (ASan)2.3 mtrace 3.Windows平台检测工具3.1 Visual Studio诊断工具3.2 CRT调试堆 4.嵌入式系统检测方法4.1 RT-Thread内存检测4.2 自定义…...
oracle常用sql
获取主键 1. 查询主键的两种常用方法 Oracle 的主键信息存储在以下两个视图中: USER_CONSTRAINTS:存储当前用户下所有表的约束信息(如主键、外键等)。 USER_CONS_COLUMNS:存储约束对应的列信息。 方法 1ÿ…...
【第十三届“泰迪杯”数据挖掘挑战赛】【2025泰迪杯】【思路篇】A题解题全流程(持续更新)
【第十三届“泰迪杯”数据挖掘挑战赛】【2025泰迪杯】A题解题全流程-思路(持续更新) 写在前面: 1、A题、C题将会持续更新,陆续更新发布文章 2、赛题交流咨询Q群:1037590285 3、全家桶依旧包含: 代码、…...
Qt 信号量使用方法
Qt 信号量使用方法 QSemaphore 类 常用函数介绍 函数名称函数功能QSemaphore()构造并初始化对象acquire()尝试获取n个资源,如果没有那么多资源,线程将阻塞直到有n个资源可用available()返回当前信号量可用的资源个数,这个数永远不可能为负…...
C++进阶——封装哈希表实现unordered_map/set
与红黑树封装map/set基本相似,只是unordered_map/set是单向迭代器,模板多传一个HashFunc。 目录 1、源码及框架分析 2、模拟实现unordered_map/set 2.1 复用的哈希表框架及Insert 2.2 iterator的实现 2.2.1 iteartor的核心源码 2.2.2 iterator的实…...
AI Agent 实战:搭建个人在线旅游助手
AI Agent 实战:搭建个人在线旅游助手 本次实验中,我们将继续探索 Agent 的提示词,学习更加规范的提示词撰写方法。 本实验中你将掌握的知识点 使用 Dify 构建 Agent 的方法结构化的提示词撰写技巧变量的使用方法 1. 准备 在新建 Agent 之…...
CSS中的overflow属性
在 CSS 中,overflow 属性用于控制当一个元素的内容溢出其指定的区域时,应该如何处理溢出的部分。通常用于盒模型(如 div)中,指定内容超出容器时的显示方式。 overflow 属性的常用值: 1. visible(…...
【Unity】处理文字显示不全的问题
1.选中字体文件,检查 MultiAtlasTeextures 是否勾选,未勾选的话,先勾选保存后查看是否显示正常 2.勾选后未正常显示,则在搜索框中输入未显示的文本,确认字体图集是否包含该文本,然后点击Update Atlas Textu…...
蓝桥备赛指南(11):递归简介
递归的介绍 概念:递归是指函数直接或间接调用自身的过程。 解释递归的两个关键要素: 基本情况(递归终止条件):递归函数中的一个条件,当满足该条件时,递归终止,避免无限递归。可以…...
Python 图片水印处理工具
自定义水印文本自定义水印位置支持图片裁剪支持各种图片格式 from PIL import Image, ImageDraw, ImageFont import osclass ImageWatermarker:def __init__(self, font_pathNone, font_size40):"""初始化水印处理器font_path: 字体文件路径,默认使…...
从零开始:如何打造一套完整的UI设计系统?
1. 建立色彩系统 色彩系统是设计系统的基础之一,它不仅影响界面的整体美感,还对用户体验有着深远的影响。首先,设计师需要定义主色调、辅助色和强调色,并确保这些颜色在不同场景下的应用保持一致。使用工具如Adobe Color或Coolor…...
Jenkins + CICD流程一键自动部署Vue前端项目(保姆级)
git仓库地址:参考以下代码完成,或者采用自己的代码。 南泽/cicd-test 拉取项目代码到本地 使用云服务器或虚拟机采用docker部署jenkins 安装docker过程省略 采用docker部署jenkins,注意这里的命令,一定要映射docker路径,否则无…...
c# 虚函数、接口、抽象区别和应用场景
文章目录 定义和语法实现要求继承和使用场景总结访问修饰符设计目的性能扩展性在 C# 里,虚函数、接口和抽象函数都能助力实现多态性,不过它们的定义、使用场景和特点存在差异,下面为你详细剖析: 定义和语法 虚函数:虚函数在基类里定义,使用 virtual 关键字,且有默认的实…...
数据治理的主题库是做什么的
数据治理的主题库详解 一、定义与核心概念 主题库是数据治理体系中的核心组件,指围绕某一业务主题或实体对象,通过数据清洗、整合、标准化等手段形成的逻辑化、高质量数据集。其核心特征包括: 主题导向:以业务领域(…...
pytorch模型的进阶训练和性能优化
综合案例 将MNIST数据集保存成本地图片读取本地图片进行训练读取自己的数据集进行训练用自己的模型进行训练获得更多评价指标提升模型性能的方法 MNIST转本地图片 import os import torchvision import torchvision.transforms as transforms# 下载MNIST数据集 transform t…...
i18next在vue3中的应用,可参考写法或直接复用
i18next是一个国际化相关的的依赖,适配多种框,比如vue2/3,react,next.js等等,是一个非常实用的依赖。在一次项目中接触过i18n相关内容,因此今天就整理一下这个通用的插件。 官网:Introduction …...
DM数据迁移工具
DM数据迁移工具 一、概述二、迁移准备三、启动迁移工具1.Windows 环境启动 DM 数据迁移工具2.Linux 环境启动 DM 数据迁移工具2.1启用图形化安装界面前需要通过如下命令将图形界面权限放开:2.2进入数据库安装路径 /tool 目录下,运行 ./dts 即可启动 DM 数…...
Python入门(4):函数
目录 1 基本概念 1.1 函数的定义与调用 2 函数的参数 2.1 位置参数(Positional Arguments) 2.2 默认参数(Default Arguments) 2.3 关键字参数(Keyword Arguments) **2.4 可变参数(*…...
Java基础-25-继承-方法重写-子类构造器的特点-构造器this的调用
在面向对象编程中,继承是实现代码复用和扩展的重要机制。通过继承,子类可以继承父类的属性和方法,并且可以通过方法重写来改变或扩展父类的行为。此外,构造器在对象初始化过程中扮演了重要角色,尤其是在子类构造器中如…...
Mysql之事务(上)
🏝️专栏:Mysql_猫咪-9527的博客-CSDN博客 🌅主页:猫咪-9527-CSDN博客 “欲穷千里目,更上一层楼。会当凌绝顶,一览众山小。” 目录 1.什么需要为事务? 2.事务的四个特性 1. 原子性࿰…...
2025华为软件精英挑战赛2600w思路分享
这里写自定义目录标题 得分展示对象定义请求价值计算时间同步删除操作完整思路 得分展示 对象定义 // 将一个磁盘划分为多个基于标签聚合的区块 class Block{ public:int tag 0; // 区块标签int start_pos;int end_pos;int id;int use_size 0;int v;// 为区块确定范围Bloc…...
LSTM网络是什么?
环境: LSTM网络 问题描述: LSTM网络是什么? 解决方案: LSTM 网络解释 LSTM(Long Short-Term Memory)网络 是一种特殊的递归神经网络(RNN),能够学习长期依赖关系。L…...
bert自然语言处理框架
自然语言处理框架 目录 自然语言处理框架bert自然语言处理框架概念核心特点应用场景 框架和数据集结构编码-解码框架Self-Attention 机制multi-headed机制位置编码Add与Normalize整体框架outputs训练数据集 bert自然语言处理框架 概念 BERT(Bidirectional Encoder …...
UE5学习笔记 FPS游戏制作33 游戏保存
文章目录 核心思想创建数据对象创建UIUI参数和方法打开UI存档文件的位置可以保存的数据类型 核心思想 UE自己有保存游戏的功能,核心节点,类似于json操作,需要一个数据类的对象来进行保存和读取 创建存档 加载存档 保存存档 创建数据对象…...
【超详细】一文解决更新小米澎湃2.0后LSPose失效问题
【超详细】一文解决更新澎湃2.0后LSPose失效问题 问题分析: 出现这个问题大多是因为本次为大版本更新A14->A15,因此原来的LSPose无法支持新系统特性导致的,因此我们从此出发解决这个问题。 方案一(magisk): 直接…...
Python爬虫教程007:scrapy结合实际案例的简单使用
文章目录 3.1 scrapy安装3.2 scrapy的基本使用3.2.1 scrapy项目的创建和运行3.3 58同城案例3.3.1 创建案例3.3.2 项目结构说明3.4 汽车之家案例3.1 scrapy安装 什么是scrapy: Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。可以应用在包括数据挖掘、信息处…...
【可能性:如何从已有条件中分析一件事情是否会发生? 关键字摘抄】
是否可以直接从前提条件给出的信息中,推理出一件事情是否会发生呢?还真的可以,这一讲,我们就来说说,什么是逻辑上的必然性,可能性和排他性。 白马非马? 春秋战国百家争鸣时期,名家…...
WPS JS宏编程教程(从基础到进阶)-- 第四部分:函数与自定义功能开发
第四部分:函数与自定义功能开发 1. 函数的创建与调用**基础概念****1.1 命名函数与匿名函数****命名函数示例:计算矩形面积****匿名函数示例:动态赋值****1.2 箭头函数****特点**:简化语法,自动继承外层 `this`。2. 自定义函数实战**2.1 身份证信息提取函数****功能**:从…...
Pytorch 张量操作
在深度学习中,数据的表示和处理是至关重要的。PyTorch 作为一个强大的深度学习框架,其核心数据结构是张量(Tensor)。张量是一个多维数组,类似于 NumPy 的数组,但具有更强大的功能,尤其是在 GPU …...