当前位置: 首页 > article >正文

Beautiful Soup

什么是Beautiful Soup官网推荐现在的项目使用BeautifulSoup4 BeautifulSoup 4版本简称为bs4开发。bs4是一个HTML/XML的解析器主要的功能是解析和提取HTML/XML数据。bs4不仅支持CSS选择器而且支持Python标准库中的HTML解析器以及lxml的XML解析器。bs4库将复杂的HTML文档转换成树结构HTML DOM这个结构中的每个节点都是一个Python对象这些对象可以归纳为如下四种类说明bs4.element.Tag表示HTML中的标签最基本的信息组织单元。bs4.element.NavigableString表示HTML中标签的文本非属性字符串bs4.BeautifulSoup表示HTML DOM中的全部内容支持遍历文档树和搜索文档树的大部分方法。bs4.element.Comment表示标签内字符串的注释部分是一种特殊的NavigableString对象。使用bs4的一般流程安装所需的库pip install lxml -i https://mirrors.aliyun.com/pypi/simple/pip install bs4 -i https://mirrors.aliyun.com/pypi/simple/解析过程创建BeautifulSoup类的对象def __init__(self, markup, featuresNone, builderNone, parse_onlyNone, from_encodingNone, exclude_encodingsNone, **kwargs)markup表示要解析的文档字符串或者文件对象features表示解析器的名称builder参数表示指定的解析器from_encoding参数表示指定的编码格式exclude_encodings参数表示排除的编码格式。例如from bs4 import BeautifulSoup soup BeautifulSoup(html_doc, lxml)bs4支持的解析器目前bs4支持的解析器包括Python标准库、lxml和html5lib它们的优势和劣势的比较如下。解析器使用方法优势劣势Python标准库BeautifulSoup(markup, html.parser)1Python的内置标准库2执行速度适中3文档容错能力强Python 2.7.3或3.2.2之前的版本中文档容错能力差lxml HTML解析器BeautifulSoup(markup, lxml)1速度快2文档容错能力强需要安装C语言库lxml XML解析器BeautifulSoup(markup, [lxml-xml])1速度快2唯一支持XML的解析器需要安装C语言库html5libBeautifulSoup(markup, html5lib)1最好的容错性2以浏览器的方式解析文档3生成HTML5格式的文档1速度慢2不依赖外部扩展在创建BeautifulSoup对象时如果没有明确地指定解析器那么BeautifulSoup对象会根据当前系统安装的库自动选择解析器解析器的选择顺序为lxml》html5lib》Python标准库要解析的html字符串html head title测试数据/title p title内嵌的标题/title /p /head body p idlink/p p idu1 a hrefhttp://example.com/elsie classsister idlink1Elsie/a a hrefhttp://example.com/elsie classsister idlink2Elsie/a a hrefhttp://example.com/elsie classsister idlink3Elsie/a a hrefhttp://example.com/elsie classsister idlink4Elsie/a b a hrefhttp://tieba.baidu.com classLacie idlink5Elsie/a /b /p div classbri p classbri/p a classbriLacie/a span>通过api之find_all查找import re from bs4 import BeautifulSoup from pathlib import Path # 创建 Path 对象 file_path Path(test.html) soup BeautifulSoup(file_path.read_text(utf-8), html.parser) print(----,打印文档树,----) print(soup) print(----,打印格式化文档树,----) print(soup.prettify()) # find_all(self, nameNone, attrs{}, recursiveTrue, textNone,limitNone, **kwargs) # 传入字符串 print(----,传入字符串,----) result_set soup.find_all(b) print(result_set) # 传入正则 print(----,传入正则,----) for tag in soup.find_all(re.compile(^b)): print(tag.name) # 传入列表 print(----,传入列表,----) r soup.find_all([a, b]) print(r) # 传入属性 print(----,传入属性,----) r soup.find_all(idlink1) print(r) # 传入多个属性 print(----,传入多个属性,----) r soup.find_all(hrefre.compile(elsie), idlink1) print(r) # 识别不了特殊的属性 print(----,识别不了特殊的属性,----) #r soup.find_all(data-foopig) r soup.find_all(attrs{data-foo: pig}) print(r) # 传入class标签 print(----,传入class属性,----) r soup.find_all(a, class_sister) print(r) # 传入text print(----,传入text,----) r soup.find_all(stringElsie) print(r) # 传入多个text print(----,传入多个text,----) r soup.find_all(string[Tillie, Elsie, Lacie]) print(r) # limit 参数 print(----,limit 参数,----) r soup.find_all(a, limit2) print(r) # recursive参数如果只想搜索当前节点的直接子节点那么就可以使用参数recursiveFalse。 print(----,recursive参数true,----) r soup.html.find_all(title) print(r) print(----,recursive参数false,----) r soup.html.find_all(title, recursiveFalse) print(r)css选择器查找import re from bs4 import BeautifulSoup from pathlib import Path # 创建 Path 对象 file_path Path(test.html) bs BeautifulSoup(file_path.read_text(utf-8), html.parser) #print(bs.prettify()) # css选择器 # 1通过标签名查找 print(----,通过标签a查找,----) print(len(bs.select(a))) print(----,通过组合标签p a查找,----) print(len(bs.select(p a))) print(----,通过组合标签pa查找,----) print(len(bs.select(pa))) # 2通过类名查找 print(----,通过类名sister查找,----) print(len(bs.select(.sister))) # 3通过id查找 print(----,通过idu1查找,----) print(bs.select(#u1)) # 4组合查找 print(----,组合查找----) print(bs.select(div .bri)) # 5属性查找 print(----,通过class属性查找,----) print(bs.select(a[class~bri])) print(---- ,通过属性href查找,----) print(bs.select(a[hrefhttp://tieba.baidu.com])) # 6获取文本内容 print(---- ,获取文本内容,----) print(bs.select(title)[0].get_text())比较Find_all()与select()作用Find_all()Select()筛选出所有a标签soup.find_all(a)soup.select(a)筛选出class属性是footer的标签soup.find_all(class_footer)soup.select(.footer)筛选出id属性是link的p标签soup.find_all(p, idlink)soup.select(p[idlink])筛选出head标签下的title标签soup.head.find_all(title)孙子title也会被找出来soup.select(head title)筛选出超链接属性是”www.baidu.com”的a标签soup.find_all(a,hrefwww.baidu.com)soup.select(a[hrefwww.baidu.com])import re from bs4 import BeautifulSoup from pathlib import Path # 创建 Path 对象 file_path Path(test.html) soup BeautifulSoup(file_path.read_text(), html.parser) rsoup.find_all(p, idlink) print(r) rsoup.select(p[idlink]) print(r) rsoup.head.find_all(title) print(r) rsoup.select(head title) print(r)

相关文章:

Beautiful Soup

什么是Beautiful Soup 官网推荐现在的项目使用BeautifulSoup4 (BeautifulSoup 4版本,简称为bs4)开发。bs4是一个HTML/XML的解析器,主要的功能是解析和提取HTML/XML数据。 bs4不仅支持CSS选择器,而且支持Python标准库…...

Intv_AI_MK11与Claude协同实战:构建多模型AI应用开发平台

Intv_AI_MK11与Claude协同实战:构建多模型AI应用开发平台 1. 混合AI模型的应用价值 在AI应用开发领域,单一模型往往难以满足复杂业务需求。就像一支足球队需要不同位置的球员配合一样,将Intv_AI_MK11与Claude等模型协同部署,能够…...

Qwen3.5-9B-AWQ-4bit Proteus电路仿真辅助:原理图分析与代码生成

Qwen3.5-9B-AWQ-4bit Proteus电路仿真辅助:原理图分析与代码生成 1. 电子工程师的新助手 作为一名电子工程师,你是否经常遇到这样的场景:面对复杂的电路原理图,需要花费大量时间分析各个模块的功能;或者在Proteus中设…...

Git-RSCLIP多场景落地:生态环境监测中‘红树林退化’语义识别案例

Git-RSCLIP多场景落地:生态环境监测中"红树林退化"语义识别案例 1. 项目背景与需求 红树林作为重要的海岸带生态系统,具有防风消浪、净化水质、维持生物多样性等重要生态功能。然而近年来,由于人类活动和环境变化,全球…...

Qwen-Image-Edit-2511在云端:集成显卡/Mac也能流畅运行的AI修图方案

Qwen-Image-Edit-2511在云端:集成显卡/Mac也能流畅运行的AI修图方案 1. 为什么选择云端部署Qwen-Image-Edit-2511? 1.1 硬件限制的突破性解决方案 传统AI图像编辑工具对硬件的高要求一直是普通用户的痛点。Qwen-Image-Edit-2511作为最新一代多模态编辑…...

基于Matlab实现 IEEE33节点配电网系统simulink仿真模型,并配套前推回代法潮流计算程序

基于Matlab实现 IEEE33节点配电网系统simulink仿真模型,并配套前推回代法潮流计算程序。 改进的IEEE33节点,潮流计算,电压分析,可自行加风机光伏,接电动机负载。 结果图如图所展示,附带IEEE33节点数据MATLA…...

M2LOrder模型赋能软件测试:用例生成与缺陷预测实践

M2LOrder模型赋能软件测试:用例生成与缺陷预测实践 最近和几个做测试的朋友聊天,大家普遍吐槽,现在软件迭代越来越快,留给测试的时间却越来越短。需求文档刚定稿,开发那边代码就快写完了,测试用例还没设计…...

从直觉到算法:贝叶斯思维的技术底层与工程实现督

背景 在软件开发的漫长旅途中,"构建"这个词往往让人又爱又恨。爱的是,一键点击,代码变成产品,那是程序员最迷人的时刻;恨的是,维护那一堆乱糟糟的构建脚本,简直是噩梦。 在很多项目中…...

算术运算符(i++与++i)

i与i在独立使用时结果一致;作为表达式使用时:j 8(1)k j 等于 j j1,再k j 。先自增,再赋值 ,j9,k9(2) k j 等于 k j,再j j1 。先赋值&#…...

从零解析SHA-1:一个160位哈希的诞生之旅

1. 从原材料到成品:SHA-1的工厂流水线 想象你是一家精密零件加工厂的厂长,每天要处理各种形状不规则的金属原料(原始数据),最终需要生产出标准化的160位产品(哈希值)。SHA-1算法就像这条全自动生…...

别再死记硬背Payload了:用BUUCTF Basic靶场案例拆解漏洞利用的本质逻辑

别再死记硬背Payload了:用BUUCTF Basic靶场案例拆解漏洞利用的本质逻辑 在网络安全领域,很多学习者都会陷入一个误区:过度依赖现成的Payload和工具脚本,而忽视了漏洞利用背后的核心逻辑。这种学习方式虽然能快速解决特定题目&…...

OpenClaw调用Qwen3-32B镜像成本实测:RTX4090D长任务Token消耗分析

OpenClaw调用Qwen3-32B镜像成本实测:RTX4090D长任务Token消耗分析 1. 为什么关注OpenClaw的Token消耗问题 第一次用OpenClaw完成文件整理任务时,我被账单吓了一跳——短短10分钟的操作消耗了近3万Token。这让我意识到:自动化助手的长期使用…...

系统分析师论文模版分析

系统分析师论文模板深度分析 系统分析师考试的论文(科目三)是一道 2500~3000字 的论述题,要求结合实际项目经验,围绕给定主题展开分析。论文的评分维度包括:切合题意、理论深度、实践细节、逻辑结构、语言表达。以下是对典型论文模板的结构拆解与写作要点分析。 一、论文…...

GPU算力优化实践:Pixel Epic智识终端显存配额与逻辑发散调参详解

GPU算力优化实践:Pixel Epic智识终端显存配额与逻辑发散调参详解 1. 引言:当像素冒险遇上AI研究 在科研领域,我们常常面临一个两难选择:要么追求严谨性而牺牲创造力,要么放飞思维却失去逻辑性。Pixel Epic智识终端通…...

LFM2.5-1.2B-Thinking-GGUF效果展示:32K上下文下跨段落信息关联与归纳能力实测

LFM2.5-1.2B-Thinking-GGUF效果展示:32K上下文下跨段落信息关联与归纳能力实测 1. 模型核心能力展示 1.1 32K上下文处理实测 LFM2.5-1.2B-Thinking-GGUF最突出的能力是其32K超长上下文处理能力。在实际测试中,我们输入了一篇约2万字的技术文档&#x…...

OpenClaw跨模型路由:按图片类型分配Qwen3.5-9B与本地LLM

OpenClaw跨模型路由:按图片类型分配Qwen3.5-9B与本地LLM 1. 为什么需要跨模型路由 去年我在处理大量技术文档截图时,发现一个有趣的现象:流程图和表格类图片需要强大的多模态理解能力,而纯文字截图往往只需要基础的OCR功能。当时…...

基于YOLOV5的手势识别检测系统

基于YOLOV5的手势识别检测系统项目介绍: 软件:PycharmAnaconda 环境:python3.8 opencv_python PyQt5文件: 1.完整程序文件(.py等) 2.UI界面源文件、图标(.ui、.qrc、.py等) 3.测试图…...

全国首个!深开鸿与前海供电公司打造的数据中心电鸿变配电室正式投运

不久前,我国首个专为数据中心设计的用户专用电力开源鸿蒙变配电室在深圳前海投入使用。该项目由深开鸿与深圳前海供电公司打造,以电鸿物联操作系统为核心,融合感知终端、电力物联、数字孪生、人工智能四大能力,为前海信息枢纽大厦…...

Qwen3-Reranker完整指南:支持Markdown/HTML文档解析的增强版方案

Qwen3-Reranker完整指南:支持Markdown/HTML文档解析的增强版方案 1. 引言:重新定义文档检索的精准度 在日常工作中,你是否遇到过这样的困扰:用关键词搜索文档时,系统返回的结果看似相关,实际上却偏离了你…...

基于Qt框架的桌面应用开发:集成nli-distilroberta-base实现本地文本分析工具

基于Qt框架的桌面应用开发:集成nli-distilroberta-base实现本地文本分析工具 1. 引言:当桌面应用遇上NLP模型 最近在开发一个跨平台的文本分析工具时,遇到了一个有趣的需求:如何让传统桌面应用具备自然语言理解能力?…...

仅限首批内测用户掌握的PyTorch 3.0图优化黑盒(torch._dynamo.eval_frame._optimize_ctx),3行代码解锁Graph-Level Profiling

第一章:PyTorch 3.0 静态图分布式训练性能调优指南PyTorch 3.0 引入了原生静态图编译能力(通过 torch.compile(..., dynamicFalse) 显式启用),结合 DistributedDataParallel(DDP)与 FSDP,可在多…...

005、边缘AI与嵌入式智能:芯片、算法与场景的融合

005、边缘AI与嵌入式智能:芯片、算法与场景的融合 昨天深夜调一个图像分类模型,在PC上精度还有92%,部署到开发板上直接掉到60%不到。板子的推理输出全是乱码,散热片烫得能煎鸡蛋。这种问题在边缘AI项目里太典型了——实验室的算法…...

跨平台兼容秘诀:OpenClaw在Linux对接百川2-13B-4bits模型全记录

跨平台兼容秘诀:OpenClaw在Linux对接百川2-13B-4bits模型全记录 1. 为什么选择Linux环境部署OpenClaw 去年夏天,当我第一次尝试在Ubuntu服务器上部署OpenClaw时,完全没料到这会成为我最折腾也最有成就感的开源项目实践。作为长期使用macOS的…...

Qwen3-ASR-1.7B应用案例:在线面试平台→实时语音转文字+回答时长分析

Qwen3-ASR-1.7B应用案例:在线面试平台→实时语音转文字回答时长分析 想象一下,你是一家快速发展的科技公司HR,每天要面试几十位候选人。面试官一边提问,一边手忙脚乱地记录,生怕漏掉关键信息。面试结束后,…...

2026年本地录音转文字工具实测对比算准确率算本地处理速度,差距竟然这么大

对比了多款本地录音转文字工具,听脑AI是综合体验最好的,没有之一。我自己做内容创作天天跟AI工具打交道,最近半个月一堆教育圈的朋友找我要靠谱的转写工具——备课要整理公开课素材,教研会要记讨论内容,开完家长会还要…...

OpenClaw 核心概念关系与配置指南

文章目录🏗️ 一、核心概念关系图🔄 二、核心概念关系详解1. Gateway(网关)- 控制中枢2. Agent(智能体)- 执行单元3. Skills(技能)- 功能模块4. Tools(工具)-…...

网站 Favicon 获取 API 技术实现指南

接口概述 本文档介绍一个通过 URL 参数获取任意网站 Favicon 图标的技术方案,包括接口设计、调用方法、错误处理及调试技巧。 接口规范 基础信息 项目说明接口地址https://api.afmax.cn/so/ico/index.php请求方式GET响应格式图片二进制数据(ICO/PNG/J…...

突破算力边界:生成式AI与深度学习的前沿实践

在算力爆炸与算法迭代的双重驱动下,深度学习正从“感知智能”向“生成智能”实现跨越式突破,数字孪生、神经渲染、多模态交互等前沿应用,正将科幻场景照进现实。本文聚焦深度学习领域最具科技感的核心方向,结合工业级实践案例与轻量化代码演示,拆解生成式AI、Transformer架…...

FlowState Lab实战:5步搞定时间序列预测,效果惊艳!

FlowState Lab实战:5步搞定时间序列预测,效果惊艳! 1. 时空波动仪简介 时空波动仪(Temporal Surge Monitor)是一款基于IBM Granite FlowState架构的零样本时间序列预测工具。它将前沿的预测能力与80年代科学实验室的…...

墨语灵犀赋能在线教育:AI助教自动批改编程作业实践

墨语灵犀赋能在线教育:AI助教自动批改编程作业实践 每次上完《Python入门》课,看着邮箱里堆积如山的作业压缩包,你是不是也感到一阵头疼?打开一份作业,从代码缩进看到变量命名,再从逻辑结构分析到运行结果…...