Python 爬虫框架对比与推荐
Python 爬虫框架对比与推荐
- Python 爬虫框架对比与推荐
- 1. Scrapy
- 1.1 框架介绍
- 1.2 优点
- 1.3 缺点
- 1.4 适用场景
- 2. PySpider
- 2.1 框架介绍
- 2.2 优点
- 2.3 缺点
- 2.4 适用场景
- 3. Selenium
- 3.1 框架介绍
- 3.2 优点
- 3.3 缺点
- 3.4 适用场景
- 4. BeautifulSoup + Requests(自定义方案)
- 4.1 框架介绍
- 4.2 优点
- 4.3 缺点
- 4.4 适用场景
- 5. Requests-HTML
- 5.1 框架介绍
- 5.2 优点
- 5.3 缺点
- 5.4 适用场景
- 6. 选择推荐
- 6.1 最推荐的框架
- 6.2 适用于小规模项目的框架
- 总结
Python 爬虫框架对比与推荐
在进行 Python 爬虫开发时,选择合适的框架对项目的高效性与可维护性至关重要。每种框架都有其特定的优势和适用场景。本文将对常见的 Python 爬虫框架进行详细对比,帮助开发者根据需求做出选择。
1. Scrapy
1.1 框架介绍
Scrapy 是一个功能全面且高效的爬虫框架,它是开源的,并且由 Python 编写。Scrapy 主要用于网页抓取(Web Crawling)和数据提取(Web Scraping),并且为大规模的爬虫项目提供了强大的支持。
1.2 优点
- 高效性能:基于 Twisted 库进行异步处理,支持高并发的网络请求,可以在较短时间内抓取大量数据。
- 功能全面:内置了强大的数据提取、错误处理、重试机制、请求调度、自动化存储等模块,开发者可以直接利用这些功能进行开发。
- 灵活的扩展性:Scrapy 提供了中间件、管道、信号等机制,可以让开发者根据需求对爬虫进行灵活的扩展和定制。
- 分布式爬取:通过与第三方工具如 Crawlera 或 Scrapy Cluster 集成,Scrapy 可以非常轻松地实现分布式爬虫,适用于大规模抓取任务。
- 数据存储支持:支持多种数据存储方式,如 JSON、CSV、XML 等格式,或者直接存储到 MySQL、MongoDB 等数据库中。
1.3 缺点
- 学习曲线:Scrapy 的功能丰富,初学者可能需要一定时间来理解它的工作原理,尤其是与异步编程和分布式爬取相关的部分。
- 资源消耗:Scrapy 在处理非常简单的爬虫任务时可能显得有些过于复杂,性能消耗较大。
1.4 适用场景
- 大规模的数据抓取任务
- 需要高并发请求的项目
- 需要定时任务、数据清洗、存储等功能的复杂爬虫
- 分布式爬取
2. PySpider
2.1 框架介绍
PySpider 是一个分布式的爬虫框架,具有强大的 Web 界面,可以用于实时管理和监控爬虫任务。它支持异步请求,能够高效地处理并发请求,适合大规模的网页抓取。
2.2 优点
- 分布式爬虫:PySpider 可以在多个节点之间分配爬虫任务,适合需要处理大规模数据抓取的场景。
- Web UI:PySpider 提供了一个图形化的 Web 界面,便于用户管理和监控爬虫,查看爬虫的运行状态、日志和抓取的数据。
- 异步支持:支持异步处理任务,能够有效地提高抓取效率。
2.3 缺点
- 开发活跃度较低:相较于 Scrapy,PySpider 的社区和开发活动相对较少,文档和教程资源也不如 Scrapy 丰富。
- 性能问题:虽然 PySpider 在分布式爬虫中表现不错,但在高并发和极大数据量处理上,Scrapy 可能会更加高效。
2.4 适用场景
- 需要分布式爬取的任务
- 需要 Web UI 管理和实时监控的项目
- 中小规模的爬虫任务
3. Selenium
3.1 框架介绍
Selenium 是一个用于自动化浏览器操作的框架,它不仅用于网页抓取,也广泛应用于自动化测试。Selenium 可以模拟用户在浏览器中的操作,适用于动态内容加载的网站。
3.2 优点
- 支持动态网页抓取:对于那些需要执行 JavaScript 才能加载内容的网页,Selenium 可以通过启动实际的浏览器来抓取数据。
- 模拟用户行为:Selenium 能够模拟点击、滚动、输入等用户行为,适合需要与页面交互的爬虫任务。
3.3 缺点
- 性能较低:Selenium 启动和控制浏览器的过程比传统的 HTTP 请求要慢,尤其是在处理大量页面时,效率较低。
- 资源消耗大:需要消耗大量的系统资源,特别是在大规模爬取时,可能会导致性能瓶颈。
3.4 适用场景
- 需要抓取 JavaScript 渲染的动态页面
- 需要模拟用户行为(如填写表单、点击按钮等)
- 适合中小规模的动态网站抓取
4. BeautifulSoup + Requests(自定义方案)
4.1 框架介绍
BeautifulSoup 和 Requests 是 Python 中最常用的网页抓取工具,虽然它们并不是一个完整的爬虫框架,但结合使用时可以进行简单而灵活的网页抓取。
4.2 优点
- 简单易用:两者结合使用非常简单,适合抓取静态网页。
- 灵活性高:可以根据需求自定义抓取流程,处理起来非常灵活。
- 轻量级:适用于简单的网页抓取任务,不需要像 Scrapy 那样的重型框架。
4.3 缺点
- 功能有限:缺少并发请求、调度、数据清洗等功能,需要开发者自行实现。
- 不适用于动态网页:对 JavaScript 渲染内容的支持较差,不适合抓取现代复杂网站。
4.4 适用场景
- 小规模、简单的爬虫任务
- 静态网页抓取
- 需要高度自定义抓取逻辑的项目
5. Requests-HTML
5.1 框架介绍
Requests-HTML 是基于 Requests 库的扩展,提供了 HTML 内容的抓取功能,并内置了对 JavaScript 渲染页面的支持,适合抓取动态网页。
5.2 优点
- JavaScript 渲染支持:通过内置的
pyppeteer
支持 JavaScript 渲染,能够抓取现代的动态网页。 - 易于使用:API 设计简单,使用方式与 Requests 类似,非常容易上手。
- 高效:相较于 Selenium,Requests-HTML 的性能要好得多,尤其在不需要完整浏览器渲染时。
5.3 缺点
- 功能相对有限:不像 Scrapy 那样功能丰富,缺乏像并发控制、任务调度等完整的框架支持。
- 性能瓶颈:对于非常大规模的任务,性能可能不如 Scrapy 或 PySpider。
5.4 适用场景
- 需要处理 JavaScript 渲染的网页
- 简单的爬虫任务
- 中小规模的数据抓取
6. 选择推荐
6.1 最推荐的框架
对于大多数数据抓取任务,Scrapy 无疑是最推荐的框架。它的高效性、灵活性以及完整的功能使其成为开发者首选的爬虫框架,特别是在大规模、高并发的爬虫任务中,Scrapy 能提供出色的性能和易于扩展的架构。
- 如果你的需求涉及到 大规模爬取、高并发请求、数据清洗 和 分布式部署,Scrapy 是最合适的选择。
- 如果你只是需要抓取一些简单的 静态网页 或者对 动态网页 的支持要求不高,可以选择 Requests-HTML 或 BeautifulSoup + Requests 组合。
- 如果你的爬虫任务涉及 复杂的动态页面 和 用户行为模拟,Selenium 是一个不错的选择,尽管它的性能较低。
6.2 适用于小规模项目的框架
对于简单的爬虫任务,BeautifulSoup + Requests 或 Requests-HTML 是更加轻量级且灵活的选择。如果任务较为简单且没有高并发的需求,这两者能满足基本的抓取需求。
总结
选择 Python 爬虫框架时,最重要的是根据任务的需求来评估。对于大规模、高并发的任务,Scrapy 是最强大的选择;对于较为简单的爬虫需求,BeautifulSoup 和 Requests 提供了更加灵活的方式。了解每个框架的特点和适用场景后,可以帮助你做出最佳决策。
相关文章:
Python 爬虫框架对比与推荐
Python 爬虫框架对比与推荐 Python 爬虫框架对比与推荐1. Scrapy1.1 框架介绍1.2 优点1.3 缺点1.4 适用场景 2. PySpider2.1 框架介绍2.2 优点2.3 缺点2.4 适用场景 3. Selenium3.1 框架介绍3.2 优点3.3 缺点3.4 适用场景 4. BeautifulSoup Requests(自定义方案&am…...
本地DeepSeek模型GGUF文件转换为PyTorch格式
接前文,我们在本地Windows系统上,基于GGUF文件部署了DeepSeek模型(DeepSeek-R1-Distill-Qwen-1.5B.gguf版本),但是GGUF是已经量化的版本,我们除了对其进行微调之外,无法对其训练,那么还有没有其他办法对本地的GGUF部署的DeepSeek模型进行训练呢?今天我们就反其道而行之…...
自动化测试框架搭建-单次接口执行-三部曲
目的 判断接口返回值和提前设置的预期是否一致,从而判断本次测试是否通过 代码步骤设计 第一步:前端调用后端已经写好的POST接口,并传递参数 第二步:后端接收到参数,组装并请求指定接口,保存返回 第三…...
SAP F1搜索帮助 添加自定义功能按钮
最近deepseek 比较火,好多伙伴把deep seek 调用集成到SAP 系统,集成需要方便的去查询问题,方便一点就是添加在F1搜索帮助的地方,看到有朋友问看自定义按钮怎么添加在F1的工具栏,跟踪了下代码,尝试了下&…...
Webpack,Vite打包的理解
Webpack 和 Vite 都是现代前端开发中常用的构建工具,用于打包和优化项目代码。尽管它们的目标相似,但在设计理念、工作方式和适用场景上存在显著差异。 Webpack Webpack 是一个模块打包工具,主要用于将多个模块(如 JavaScript、…...
ollama部署大模型,本地调用
Ollama是一个强大的大型语言模型平台,它允许用户轻松地下载、安装和运行各种大型语言模型。在本文中,我将指导你如何在你的本地机器上部署Ollama,并展示如何使用Python进行简单的API调用以访问这些模型。 最近很多人在学习大模型的时候&…...
【ISO 14229-1:2023 UDS诊断(ECU复位0x11服务)测试用例CAPL代码全解析⑩】
ISO 14229-1:2023 UDS诊断【ECU复位0x11服务】_TestCase10 作者:车端域控测试工程师 更新日期:2025年02月18日 关键词:UDS诊断协议、ECU复位服务、0x11服务、ISO 14229-1:2023 TC11-010测试用例 用例ID测试场景验证要点参考条款预期结果TC…...
opencv实时二维码识别的一种实现与思路分享
在嵌入式平台上比如 rk3568 这种弱鸡的平台,要做到实时视频处理就非常鸡肋,不像英伟达那种 deepstrem 什么的。 开始的时候,我们使用python 下的 pyzbar + opencv opencv 读取摄像头的数据然后每帧送到 pyzbar 二维码识别函数里面进行处理,然后打印出识别的数字。结果,非常…...
【ISO 14229-1:2023 UDS诊断(ECU复位0x11服务)测试用例CAPL代码全解析⑫】
ISO 14229-1:2023 UDS诊断【ECU复位0x11服务】_TestCase12 作者:车端域控测试工程师 更新日期:2025年02月18日 关键词:UDS诊断协议、ECU复位服务、0x11服务、ISO 14229-1:2023 TC11-012测试用例 用例ID测试场景验证要点参考条款预期结果TC…...
Jenkins同一个项目不同分支指定不同JAVA环境
背景 一些系统应用,会为了适配不同的平台,导致不同的分支下用的是不同的gradle,导致需要不同的JAVA环境来编译,比如a分支需要使用JAVA11, b分支使用JAVA17。 但是jenkins上,一般都是Global Tool Configuration 全局所有环境公用一个JAVA_HOME。 尝试过用 Build 的Execut…...
小爱音箱连接电脑外放之后,浏览器网页视频暂停播放后,音箱整体没声音问题解决
背景 22年买的小爱音箱增强版play,小爱音箱连接电脑外放之后,浏览器网页视频暂停播放后,音箱整体没声音(一边打着游戏,一边听歌,一边放视频,视频一暂停,什么声音都没了,…...
AIGC(生成式AI)试用 21 -- Python调用deepseek API
1. 安装openai pip3 install openai########################## Collecting openaiUsing cached openai-1.61.1-py3-none-any.whl.metadata (27 kB) Collecting anyio<5,>3.5.0 (from openai)Using cached anyio-4.8.0-py3-none-any.whl.metadata (4.6 kB) Collecting d…...
使用linux脚本部署discuz博客(详细注释版)
使用脚本部署一个discuzz项目 1.显示当前环境状态 防火墙状态 selinux状态 httpd状态 由上可知,虚拟机已处于最初始状态 2.脚本编写 #!/bin/bash #这是一个通过脚本来部署discuzz博客 firewalld关闭 systemctl stop firewalld if [ $? -eq 0 ];then echo "…...
Kafka的生产者和消费者模型
Kafka的生产者和消费者模型是一种消息传递模式,以下是该模型的详细描述: 一、生产者(Producer) 定义:生产者是消息的生产者,它将消息发布到Kafka的主题(Topic)中。 功能࿱…...
调用openssl实现加解密算法
由于工作中涉及到加解密,包括Hash(SHA256)算法、HMAC_SHA256 算法、ECDH算法、ECC签名算法、AES/CBC 128算法一共涉及5类算法,笔者通过查询发现openssl库以上算法都支持,索性借助openssl库实现上述5类算法。笔者用的op…...
【Python项目】信息安全领域中语义搜索引擎系统
【Python项目】信息安全领域中语义搜索引擎系统 技术简介:采用Python技术、MYSQL数据库等实现。 系统简介:系统主要是围绕着语义搜索展开的,要将输入的文字在爬取数据时能够通过深层次的内涵理解,来更好的查找到与之相关的精准信息…...
快速排序_912. 排序数组(10中排序算法)
快速排序_912. 排序数组(10中排序算法) 1 快速排序(重点)报错代码超时代码修改官方题解快速排序 1:基本快速排序快速排序 2:双指针(指针对撞)快速排序快速排序 3:三指针快…...
BS5852英国家具防火安全条款主要包括哪几个方面呢?
什么是BS5852检测? BS5852是英国针对家用家具的强制性安全要求,主要测试家具在受到燃烧香烟和火柴等火源时的可燃性。这个标准通常分为四个部分进行测试,但实际应用中主要测试第一部分和第二部分,包括烟头测试和利用乙炔火焰模拟…...
高考或者单招考试需要考物理这科目
问题:帮忙搜索一下以上学校哪些高考或者单招考试需要考物理这科目的 回答: 根据目前获取的资料,明确提及高考或单招考试需考物理的学校为湖南工业职业技术学院,在部分专业单招时要求选考物理;其他学校暂未发现明确提…...
基于vue3实现的课堂点名程序
设计思路 采用vue3实现的课堂点名程序,模拟课堂座位布局,点击开始点名按钮后,一朵鲜花在座位间传递,直到点击结束点名按钮,鲜花停留的座位被点名。 课堂点名 座位组件 seat.vue <script setup>//组合式APIimpo…...
压力传感器
压力传感器是一种用于测量气体或液体压力的设备,广泛应用于工业控制、汽车电子、医疗设备、航空航天等领域。以下是关于压力传感器的详细介绍: 一、压力传感器的分类 1. 按测量原理分类 - 压阻式压力传感器: - 原理:利用压…...
Django REST Framework (DRF) 中用于构建 API 视图类解析
Django REST Framework (DRF) 提供了丰富的视图类,用于构建 API 视图。这些视图类可以分为以下几类: 1. 基础视图类 这些是 DRF 中最基础的视图类,通常用于实现自定义逻辑。 常用类 APIView: 最基本的视图类,所有其…...
DeepSeek介绍[Cache-Through、Cache-Around、Cache-Behind、Cache-Asid]
Cache-Through、Cache-Around、Cache-Behind和Cache-Aside是几种常见的缓存策略,每种策略有其独特的工作机制和应用场景。以下是对这些缓存模式的详细介绍: 1. Cache-Through 工作原理: 读操作:应用程序首先向缓存层请求数据。…...
React 前端框架介绍
什么是 React? React 是一个由 Facebook 开发并维护的开源 JavaScript 库,用于构建用户界面。它主要用于创建交互式用户界Face(UI),尤其是当数据变化时需要更新部分视图时非常有效。React 的核心思想是组件化和声明性…...
自制简单的图片查看器(python)
图片格式:支持常见的图片格式(JPG、PNG、BMP、GIF)。 import os import tkinter as tk from tkinter import filedialog, messagebox from PIL import Image, ImageTkclass ImageViewer:def __init__(self, root):self.root rootself.root.…...
基于Electron+Vue3创建桌面应用
Electron 是一个开源框架,基于 Chromium 和 Node.js,用于开发跨平台桌面应用程序。它允许开发者使用 HTML、CSS 和 JavaScript 等 Web 技术构建原生桌面应用,支持 Windows、macOS 和 Linux。Electron 以其开发便捷性、强大的功能和丰富的生态系统而广泛应用于工具类应用、媒…...
Redis实战-扩展Redis
扩展Redis 1、扩展读性能2、扩展写性能和内存容量3、扩展复杂的查询3.1 扩展联合查询3.2 扩展分片排序 如有侵权,请联系~ 如有错误,也欢迎批评指正~ 本篇文章大部分是来自学习《Redis实战》的笔记 1、扩展读性能 单台Redis服务器…...
Vue 前端开发中的路由知识:从入门到精通
文章目录 引言1. Vue Router 简介1.1 安装 Vue Router1.2 配置 Vue Router1.3 在 Vue 实例中使用 Vue Router 2. 路由的基本用法2.1 路由映射2.2 路由视图2.3 路由链接 3. 动态路由3.1 动态路径参数3.2 访问动态参数3.3 响应路由参数的变化 4. 嵌套路由4.1 定义嵌套路由4.2 渲染…...
为AI聊天工具添加一个知识系统 之109 详细设计之50 三性三量三境
本文要点 纵观整个讨论过程 最初我提“相得益彰的三性(三性) 相提并论的三者(三量) 相映成趣的三化(三境)” “ 确定 今天的讨论题-- “我”的知识树:相得益彰的三性(即 三性&…...
51-ArrayList
51-ArrayList Collection 类型介绍 仓颉中常用的几种基础 Collection 类型,包含 Array、ArrayList、HashSet、HashMap。 可以在不同的场景中选择适合对应业务的类型: Array:如果不需要增加和删除元素,但需要修改元素ÿ…...
工业制造能耗管理新突破,漫途MTIC-ECM平台助力企业绿色转型!
在工业制造领域,能源消耗一直是企业运营成本的重要组成部分。随着“双碳”目标的推进,如何实现高效能耗管理,成为制造企业亟待解决的问题。漫途MTIC-ECM能源能耗在线监测平台,结合其自研的硬件产品,为工业制造企业提供…...
sql注入之python脚本进行时间盲注和布尔盲注
一、什么是时间盲注和布尔盲注? 答:时间盲注是攻击者通过构造恶意sql语句利用sleep()等延迟函数来观察数据库响应时间差异来进行推断信息和条件判断。如果条件为真,数据库会执行延时操作,如果为假则立即返回。响应时间较短。 SELE…...
map的使用(c++)
在了解map之前,我们先看看两个场景,通过这两个场景的对比,让我们知道为什么要存在存储双关键字的容器 场景一:判断一堆字符串中,某一个字符串是否出现过 在没学set容器之前,我们只能想到把这一堆字符串存到…...
Android13-包安装器PackageInstaller-之apk安装流程
目的 我们最终是为了搞明白安装的整个流程通过安卓系统自带的包安装器来了解PMS 安装流程实现需求定制:静默安装-安装界面定制-安装拦截验证。【核心目的】 安装流程和PMS了解不用多说了; 安装定制相关: 如 手机上安装时候弹出锁屏界面需要输入密码;安…...
前端函数在开发环境与生产环境中处理空字符串的差异及解决方案
在前端开发过程中,我们经常会遇到一些函数在开发环境中运行正常,但在生产环境中却出现报错的情况。本文将通过具体的代码示例和分析,探讨一个函数在开发环境和生产环境中处理空字符串的差异,并提供解决方案。 1. 问题描述 我们有…...
数智读书笔记系列014 MICK《SQL进阶教程》第一版和第二版对比和总结
引言 在当今数字化时代,数据已成为企业和组织的核心资产之一。而 SQL(Structured Query Language)作为管理和操作关系型数据库的标准语言,其重要性不言而喻。无论是数据查询、插入、更新还是删除,SQL 都能高效地完成任务,广泛应用于数据分析、数据挖掘、数据仓库、Web 开…...
智能猫眼实现流程图
物理端开发流程图 客户端端开发流程图 用户功能开发流程图 管理员开发流程图...
docker安装kafka,并通过springboot快速集成kafka
目录 一、docker安装和配置Kafka 1.拉取 Zookeeper 的 Docker 镜像 2.运行 Zookeeper 容器 3.拉取 Kafka 的 Docker 镜像 4.运行 Kafka 容器 5.下载 Kafdrop 6.运行 Kafdrop 7.如果docker pull wurstmeister/zookeeper或docker pull wurstmeister/kafka下载很慢&#x…...
Spring Boot 中自动装配机制的原理
Spring Boot 的自动装配机制是其核心特性之一,它简化了 Spring 应用的配置,让开发者能够快速构建应用。以下是对其原理的详细总结: 1. 核心概念 自动装配 (Auto-configuration): Spring Boot 根据应用依赖和配置,自动配置 Spring…...
python继承中super() 不是简单的“调用父类”,而是调用 MRO 里的下一个类
Python 里的一个类可以同时继承多个父类。这让我们的模型设计变得更灵 活,但同时也带来一个新问题:“在复杂的继承关系下,如何确认子类的 某个方法会用到哪个父类?” 这里有点需要理解: MRO(方法解析顺序…...
【智慧校园】分体空调节能监管:打造高效节能的学习环境
随着科技的飞速发展和生活品质的不断提升,人们对于家居和办公环境的舒适度与智能化要求也越来越高。分体空调集中控制系统作为一种先进的空调管理方式,正逐渐成为现代家庭和办公场所的标配,为用户带来更加便捷、高效和节能的空调使用体验。随…...
【达梦数据库】dblink连接[SqlServer/Mysql]报错处理
目录 背景问题1:无法测试以ODBC数据源方式访问的外部链接!问题分析&原因解决方法 问题2:DBLINK连接丢失问题分析&原因解决方法 问题3:DBIINK远程服务器获取对象[xxx]失败,错误洋情[[FreeTDS][SQL Server]Could not find stored proce…...
STM32 ADC介绍(硬件原理篇)
目录 背景 AD转换器 采样与保持 量化 编码 AD转换器转换原理 DA转换原理 AD转换原理 1.逐次逼近型AD转换器 2.并联比较型AD转换器 编码器 同步D触发器和边沿D触发器 基本RS触发器 同步RS触发器 同步D触发器 边沿型D触发器(维持-阻塞D触发器ÿ…...
蚁剑(AutSword)的下载安装与报错解决
蚁剑(AutSword)的下载安装与报错解决 1.下载 唯一官方github下载地址 GitHub - AntSwordProject/AntSword-Loader: AntSword 加载器 2.安装 打开并且进入到下面的界面 下载需要的的版本 进行初始化 3.报错 出现下面的报错 4.解决方法 出现上面报错…...
BT401双模音频蓝牙模块如何开启ble的透传,有什么注意事项
BT401音频蓝牙模块如何开启ble的透传? 首先BT401的蓝牙音频模块,分为两个版本,dac版本和iis数字音频版本 DAC版本:就是BT401蓝牙模块【9和10脚】直接输出模拟音频信号,也就是说,直接推动耳机可以听到声音 …...
209. 长度最小的子数组
这个题目之前做过是用c语言写的 但是我这里用python来写 写的不是很好 感觉自己这里写的还是有问题 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 子数组 [numsl, numsl1, ..., numsr-1, numsr] ,…...
使用IDEA创建Maven项目、Maven坐标,以及导入Maven项目
一、创建Maven项目 正如使用Vue创建工程化的前端项目,此时,使用Maven创建标准化的后端项目。 以下适用于2021版本的IDEA。 name和artifactid会自动保持一致。 Groupid:一般写公司域名倒写,再加上项目名(也可以不…...
从零到一实现微信小程序计划时钟:完整教程
在本教程中,我们将一起实现一个微信小程序——计划时钟。这个小程序的核心功能是帮助用户添加任务、设置任务的时间范围,并且能够删除和查看已添加的任务。通过以下步骤,我们将带你从零开始实现一个具有基本功能的微信小程序计划时钟。 项目…...
最长回文子串(蓝桥云课)
题目链接:8.最长回文子串 - 蓝桥云课 (lanqiao.cn) 代码如下 # include <iostream> # include <cstring> using namespace std; int main() {string str;getline(cin, str);int res 0;for(int i 0; i < str.length(); i){int l i - 1, r i 1;…...
12-滑动窗口
一,定义 滑动窗口算法是一种用于处理数组或字符串问题的技巧,特别适合解决涉及子数组或子串的问题。它的核心思想是通过维护一个“窗口”来高效地计算或查找满足条件的子数组或子串。 基本概念 窗口:窗口是数组或字符串中的一个连续子区间&a…...