Beautiful Soup库

目录

    • 🌟Beautiful Soup库入门
      • (1) 🍉标签基本元素
      • (2) 🍉标签树下的下行遍历
      • (3) 🍉标签树的上行遍历
      • (4) 🍉标签树的平衡遍历


🌟Beautiful Soup库入门

(1) 🍉标签基本元素

基本元素说明
Tag标签,最基本的信息组织单元,分别用<>和</>标明开头和结尾
Name标签的名字,

……

的名字是‘p’,格式:.name
Attributes标签的属性,字典形式组织,格式:.attrs
NavigableString标签内非属性字符串,<>……</>中字符串,格式:.string
Comment标签内字符串的注释部分,一种特殊的Comment类型
  1. 最基本的信息单元

    import requests
    from bs4 import BeautifulSoup
    url="http://python123.io/ws/demo.html"
    try:response=requests.get(url)response.raise_for_status()html=response.textsoup=BeautifulSoup(html,"html.parser")title=soup.titlea=soup.aprint(title,a)
    except:print("爬取失败")
    
  2. 标签的名字

    import requests
    from bs4 import BeautifulSoup
    url="http://python123.io/ws/demo.html"
    try:response=requests.get(url)response.raise_for_status()html=response.textsoup=BeautifulSoup(html,"html.parser")title=soup.title.name # 获取标签的尖括号里面的内容print(title)
    except:print("爬取失败")
    
  3. 标签属性

    import requests
    from bs4 import BeautifulSoup
    url="http://python123.io/ws/demo.html"
    try:response=requests.get(url)response.raise_for_status()html=response.textsoup=BeautifulSoup(html,"html.parser")a=soup.aid=a.attrs # 查看a标签里的属性id_class=a.attrs['href'] # 获取属性的键值对,就是属性内容print(id_class)
    except:print("爬取失败")
    
  4. 标签内非属性字符串

    import requests
    from bs4 import BeautifulSoup
    url="http://python123.io/ws/demo.html"
    try:response=requests.get(url)response.raise_for_status()html=response.textsoup=BeautifulSoup(html,"html.parser")p=soup.p.stringprint(p)
    except:print("爬取失败")
    
  5. 标签内字符串的注释部分

    from bs4 import BeautifulSoupsoup=BeautifulSoup("<b><!--This is a comment--></b><p>This is not a comment</p>","html.parser")print(type(soup.b.string))
    except:print("爬取失败")
    

(2) 🍉标签树下的下行遍历

属性说明
.contents子节点的列表,将所有儿子节点存入列表
.children子节点的迭代类型,与.contents类似,用于循环遍历儿子节点
.descendants子孙节点的迭代类型,包含所有子孙节点,用于循环遍历
  1. 遍历下行

    import requests
    from bs4 import BeautifulSoup
    url="http://python123.io/ws/demo.html"
    response=requests.get(url)
    soup=BeautifulSoup(response.text,"html.parser")
    head=soup.head.contents
    body=soup.body.contents
    print(head)
    print(body)
    
  2. 遍历下行

    import requests
    from bs4 import BeautifulSoup
    url="http://python123.io/ws/demo.html"
    response=requests.get(url)
    soup=BeautifulSoup(response.text,"html.parser")
    # 遍历儿子节点
    for child in soup.body.children:print(child)
    # 遍历子孙节点
    for child in soup.body.descendants:print(child)
    

(3) 🍉标签树的上行遍历

属性说明
.parent节点的父亲标签
.parents节点先辈标签的迭代类型,用于循环遍历辈点
import requests
from bs4 import BeautifulSoup
url="http://python123.io/ws/demo.html"
response=requests.get(url)
soup=BeautifulSoup(response.text,"html.parser")
title=soup.title.parent
print(title)
for parent in soup.a.parents:if parent is None:print(parent)else:print(parent.name)

(4) 🍉标签树的平衡遍历

属性说明
.next_sibling返回按照HTML文本顺序的下一个平行节点标签
.previous_sibling返回按照HTML文本顺序的上一个平行节点标签
.next_siblings迭代类型,返回按照HTML文本顺序的后续所有平行节点标签
.previous_siblings迭代类型,返回按照HTML文本顺序的前续所有平行节点标签
import requests
from bs4 import BeautifulSoup
url="http://python123.io/ws/demo.html"
response=requests.get(url)
soup=BeautifulSoup(response.text,"html.parser")
a0=soup.a.next_sibling
print(a0)
a1=soup.a.next_sibling.next_sibling
print(a1)
a2=soup.a.previous_sibling
print(a2)
a3=soup.a.previous_sibling.previous_sibling
print(a3)
a4=soup.a.parent
print(a4)
# 遍历后续节点
for sibling in soup.a.next_sibling:print(sibling)
# 遍历前续节点
for sibling in soup.a.previous_sibling:print(sibling)
  • .prettify()为HTML文本<>及其内容增加更加”\n“

  • .prettofuy()可用与标签,方法:.prettift()

import requests
from bs4 import BeautifulSoup
url="http://python123.io/ws/demo.html"
response=requests.get(url)
soup=BeautifulSoup(response.text,"html.parser")
print(soup.prettify())

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

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

相关文章

百度云防护全新上线!支持WEB应用防火墙、DDOS防御、CC防护

百度云防护是百度旗下智能云提供的一种安全加速服务&#xff0c;通过智能DNS解析和动静态内容缓存技术&#xff0c;帮助用户提升业务的访问速度和用户体验。百度云防护集成了WAF、DDoS、CC防护能力&#xff0c;解决SQL 注入、XSS 跨站、Webshell 上传、非授权访问等多种 Web 服…

Linux文件处理知识点

"Linux0基础入门" 文件生成产生的类别&#xff1a;组管理和权限管理查看文件所有者&#xff1a;修改文件所有者&#xff1a;所在组的概念&#xff1a;组的创建修改文件所在组其他组概念修改所在组改变用户登录的初始目录 文件权限基本介绍所有者&#xff0c;所在组&a…

C++ I/O流(二)——输入流

四、文件输入流 istream类最适合用于顺序文本模式输入 ifstream类支持磁盘文件输入 istringstream类支持把字符串作为输入流 提取运算符(>>)&#xff1a; 使用进制修饰符&#xff0c;修改输入数据的进制形式。 代码示例&#xff1a;输入三个十进制数&#xff0c;转换…

Milvus的系统架构

简介 Milvus的构建在许多知名的向量搜索库比如Faiss, HNSW, DiskANN, SCANN等之上的&#xff0c;它针对稠密向量数据集的相似搜索而设计&#xff0c;能支持百万、十亿甚至万亿级别的向量搜索。 Milvus支持数据分片&#xff0c;流式数据插入&#xff0c;动态schema&#xff0c…

STM32手写寄存器的方式实现点亮LED灯

这次是从头开始学习STM32&#xff0c;看野火的视频开始学习&#xff0c;感觉需要记录的时候就要记录一下学习的心得。野火视频学习的老师讲的还是很到位的&#xff0c;能够学习到很多的细节之处&#xff0c;有时会感觉很啰嗦&#xff0c;但是不得不说确实很详细&#xff0c;只有…

线程池 ThreadPool

一般情况下我们都使用Thread类创建线程&#xff0c;因为通过Thread对象可以对线程进行灵活 的控制。但过多创建线程和销毁线程&#xff0c;会消耗掉大量的内存和CPU资源&#xff0c; 假如某段时间内突然爆发了100个短小的线程&#xff0c;创建和销毁这些线程就会消耗很多时间&a…

SAP_ABAP-思考篇

作为一个SAP十年左右的从业者&#xff0c;其实我很清楚&#xff0c;我自身的能力&#xff0c;确实是很多东西都会一点&#xff0c;但是没有一样是精通的。坦白来说&#xff0c;我的个人简介里&#xff0c;虽然也不算夸大&#xff0c;但我估计有些新手小白看着可能会觉得还挺厉害…

24pht春5

pht春5 A 相当于规定了每一位的操作次数的奇偶性。 随便排序显然不影响。 因此有 f i f i − 1 i n f i 1 n − i n f_if_{i-1}\times \dfrac i nf_{i1}\times \dfrac{n-i}n fi​fi−1​ni​fi1​nn−i​&#xff0c;是个经典问题&#xff0c;差分一下&#xff1f; 设…

【氮化镓】高电容密度的p-GaN栅电容在高频功率集成中的应用

这篇文章是香港科技大学Kevin J. Chen等人与台积电M.-H. Kwan等人关于高电容密度的p-GaN栅电容在高频功率集成中的应用研究。 文章详细介绍了p-GaN栅电容的设计、特性和在高频功率集成中的应用。通过实验数据和理论分析&#xff0c;文章展示了p-GaN栅电容在实现高电容密度、低…

Oracle工作中使用的语句

加油&#xff0c;新时代打工人&#xff01; oracle 更新表A的状态&#xff0c;在表B存在表A的数据&#xff0c;如果有更新表A的状态 UPDATE TableA A SET A.状态列 所需的新状态 WHERE EXISTS (SELECT 1FROM TableB BWHERE B.关键列 A.关键列 );Oracle Exists、 NOT Exists用…

2.前端路由的配置和使用

一&#xff0c;路由的作用 路由的作用就是将页面文件跟URL地址形成对应匹配 二&#xff0c;如何安装路由 这里我们采用pnpm的方式在项目中执行 pnpm install vue-routernext --save三&#xff0c;路由如何使用 首先创建一个我们需要访问的页面文件&#xff0c;这里我先创建…

搭建一套知识付费系统需要多少钱,怎么在朋友圈销售网课?怎么做好?

如果说互联网中哪些地方人流量最多的话&#xff0c;微信肯定榜上有名&#xff0c;可见微信的普及度非常高了&#xff0c;而微信中的朋友圈也是销售课程的好地方&#xff0c;但是想要做好缺不容易。下面我们从三个维度聊聊朋友圈销售网课如何做好? 一、朋友圈封面设计 1、易记、…

二.使用PgAdmin连接Postgresql

二.使用PgAdmin连接Postgresql PostgreSQL是一种开源的对象关系型数据库管理系统(ORDBMS),它支持大部分SQL标准并提供了许多高级功能,例如事务、外键、视图、触发器等。PostgreSQL由PostgreSQL全球开发组维护和开发,它是一种高度可扩展的数据库系统,可以在各种操作系统…

CG渲染中材质的作用

在计算机图形&#xff08;CG&#xff09;渲染中&#xff0c;材质&#xff08;Material&#xff09;起着至关重要的作用&#xff0c;它决定了物体表面的外观和特性。以下是材质在 CG 渲染中的主要作用&#xff1a; 表面外观&#xff1a;材质决定了物体表面的外观&#xff0c;包括…

web学习笔记(五十五)

目录 1. 配置代码片段的步骤 2. 条件判断 2.1 v-if、v-else、v-else-if 2.2 v-show 2.3 v-show和v-if的区别 1. 配置代码片段的步骤 在Visual Studio Code中我们可以将常用的代码配置成代码片段&#xff0c;这样就可以在页面上快速输入大段代码了。 &#xff08;1&#…

22 优化日志文件统计程序-按月份统计每个用户每天的访问次数

读取任务一中序列文件&#xff0c;统计每个用户每天的访问次数&#xff0c;最终将2021/1和2021/2的数据分别输出在两个文件中。 一、创建项目步骤&#xff1a; 1.创建项目 2.修改pom.xml文件 <packaging>jar</packaging> <dependencies><dependency>…

HNU-算法设计与分析-作业1

算法设计与分析 计科210X 甘晴void 202108010XXX 前言 这个系列本来想只用一个博客搞定的&#xff0c;谁曾想CSDN对于大批量文字的在线编辑一塌糊涂&#xff0c;感觉走倒车了。只能分成几个博客分别来讲了。后续会有作业-23456。作业重要的是搞懂原因。 文章目录 算法设计与…

python manage.py 命令大全

以下是常见的 Django 管理命令列表及其用途&#xff1a; startapp&#xff1a;创建一个新的 Django 应用程序。 startproject&#xff1a;创建一个新的 Django 项目。 runserver&#xff1a;启动开发服务器。 makemigrations&#xff1a;根据你对模型的更改创建迁移文件。 …

【数据结构】时间、空间复杂度实例分析

跌倒了&#xff0c;就重新站起来&#xff0c;继续向前走&#xff1b;傻坐在地上是没用的。&#x1f493;&#x1f493;&#x1f493; 目录 •✨说在前面 &#x1f34b;知识点一&#xff1a;算法的效率 • &#x1f330;1.斐波那契数列的第n项 • &#x1f330;2.算法的复杂度…

破解OKR落地难题:撰写阶段的陷阱与策略

OKR&#xff08;Objectives and Key Results&#xff0c;目标与关键成果&#xff09;作为一种目标管理工具&#xff0c;已经被越来越多的企业所采纳。然而&#xff0c;OKR的落地实施并非一帆风顺&#xff0c;尤其在撰写阶段&#xff0c;往往会遇到各种陷阱和挑战。本文将详细分…