当前位置:网站首页>18. `bs对象.节点名.next_sibling` previous_sibling 获取兄弟节点
18. `bs对象.节点名.next_sibling` previous_sibling 获取兄弟节点
2022-06-29 20:09:00 【安迪python学习笔记】
18. bs对象.节点名.next_sibling previous_sibling 获取兄弟节点
文章目录
1. bs对象.节点名.next_sibling 获取后一个兄弟节点

sibling [ˈsɪblɪŋ]:兄弟。
语法格式:bs对象.节点名.next_sibling
返回值:节点对象。
# 声明一个html_str字符串变量,存储部分HTML代码
html_str = """ <html> <head><meta charset="utf-8"><title>古诗2首</title></head> <body> <div class="poems" id="section1"><h2>如梦令</h2><h3>李清照<span>(宋)</span></h3><p>试问卷帘人</p><p>却道海棠依旧</p><p>知否?知否?</p><p>应是绿肥红瘦</p></div> <div class="poems" id="section2"><h2>无题</h2><h3>佚名</h3> <p>本是青灯不归客</p><p>却因浊酒留风尘</p><p>终是庄周梦了蝶</p><p>你是恩赐也是劫</p> </div> </body> </html> """
# 1. 从bs4解析库导入BeautifulSoup类用于解析数据
from bs4 import BeautifulSoup
# 2.1 BeautifulSoup类(要解析的字符串,解析器)
# 2.2 传入要解析的字符串html_str和解析器lxml,实例化类得到一个BeautifulSoup对象
bs_duixiang = BeautifulSoup(html_str, 'lxml')
print("步骤1:bs对象.节点名p——获取第1个p节点:")
print(bs_duixiang.p,'\n')
print("步骤2.1:bs对象.节点名p.next_sibling——获取第2个p节点:")
print(bs_duixiang.p.next_sibling,'\n')
print("步骤2.2:获取到的数据类型为tag对象:")
print(type(bs_duixiang.p.next_sibling),'\n')
【终端输出】
步骤1:bs对象.节点名p——获取第1个p节点:
<p>试问卷帘人</p>
步骤2.1:bs对象.节点名p.next_sibling——获取第2个p节点:
<p>却道海棠依旧</p>
步骤2.2:获取到的数据类型为tag对象:
<class 'bs4.element.Tag'>
2. bs对象.节点名.next_siblings 获取后面的所有兄弟节点
语法格式:bs对象.节点名.next_siblings
返回值:生成器。
取值方法:
方法1:for循环从生成器中取值for i,child in enumerate(bs_duixiang.p.next_siblings)
方法2:用list函数从生成器中取值list(enumerate(bs_duixiang.p.next_siblings))
# 声明一个html_str字符串变量,存储部分HTML代码
html_str = """ <html> <head><meta charset="utf-8"><title>古诗2首</title></head> <body> <div class="poems" id="section1"><h2>如梦令</h2><h3>李清照<span>(宋)</span></h3><p>试问卷帘人</p><p>却道海棠依旧</p><p>知否?知否?</p><p>应是绿肥红瘦</p></div> <div class="poems" id="section2"><h2>无题</h2><h3>佚名</h3> <p>本是青灯不归客</p><p>却因浊酒留风尘</p><p>终是庄周梦了蝶</p><p>你是恩赐也是劫</p> </div> </body> </html> """
# 1. 从bs4解析库导入BeautifulSoup类用于解析数据
from bs4 import BeautifulSoup
# 2.1 BeautifulSoup类(要解析的字符串,解析器)
# 2.2 传入要解析的字符串html_str和解析器lxml,实例化类得到一个BeautifulSoup对象
bs_duixiang = BeautifulSoup(html_str, 'lxml')
print("步骤1:bs对象.节点名p——获取第1个p节点:")
print(bs_duixiang.p,'\n')
print("步骤2.1:bs对象.节点名p.next_siblings——获取第1个p节点后面的所有兄弟节点:")
print(bs_duixiang.p.next_siblings,'\n')
print("步骤2.2:获取到的数据类型为生成器:")
print(type(bs_duixiang.p.next_siblings),'\n')
print("取值方法1:利用for循环从生成器中取值,i表示元素序号,child表示元素:")
for i, child in enumerate(bs_duixiang.p.next_siblings) :
print(i, child)
print('\n')
print("取值方法2:用list函数从生成器中取值,得到的是列表:")
print(list(enumerate(bs_duixiang.p.next_siblings)))
【终端输出】
步骤1:bs对象.节点名p——获取第1个p节点:
<p>试问卷帘人</p>
步骤2.1:bs对象.节点名p.next_siblings——获取第1个p节点后面的所有兄弟节点:
<generator object PageElement.next_siblings at 0x000001C8C4BD46D0>
步骤2.2:获取到的数据类型为生成器:
<class 'generator'>
取值方法1:利用for循环从生成器中取值,i表示元素序号,child表示元素:
0 <p>却道海棠依旧</p>
1 <p>知否?知否?</p>
2 <p>应是绿肥红瘦</p>
取值方法2:用list函数从生成器中取值,得到的是列表:
[(0, <p>却道海棠依旧</p>), (1, <p>知否?知否?</p>), (2, <p>应是绿肥红瘦</p>)]
3. bs对象.节点名.previous_sibling 获取前一个兄弟节点
previous [ˈpriːviəs]:前面的。
语法格式:bs对象.节点名.previous_sibling
返回值:节点对象。
# 声明一个html_str字符串变量,存储部分HTML代码
html_str = """ <html> <head><meta charset="utf-8"><title>古诗2首</title></head> <body> <div class="poems" id="section1"><h2>如梦令</h2><h3>李清照<span>(宋)</span></h3><p>试问卷帘人</p><p>却道海棠依旧</p><p>知否?知否?</p><p>应是绿肥红瘦</p></div> <div class="poems" id="section2"><h2>无题</h2><h3>佚名</h3> <p>本是青灯不归客</p><p>却因浊酒留风尘</p><p>终是庄周梦了蝶</p><p>你是恩赐也是劫</p> </div> </body> </html> """
# 1. 从bs4解析库导入BeautifulSoup类用于解析数据
from bs4 import BeautifulSoup
# 2.1 BeautifulSoup类(要解析的字符串,解析器)
# 2.2 传入要解析的字符串html_str和解析器lxml,实例化类得到一个BeautifulSoup对象
bs_duixiang = BeautifulSoup(html_str, 'lxml')
print("步骤1:bs对象.节点名p——获取第1个p节点:")
print(bs_duixiang.p,'\n')
print("步骤2.1:bs对象.节点名.previous_siblingg——获取第p节点前面的h3节点:")
print(bs_duixiang.p.previous_sibling,'\n')
print("步骤2.2:获取到的数据类型为tag对象:")
print(type(bs_duixiang.p.previous_sibling),'\n')
【终端输出】
步骤1:bs对象.节点名p——获取第1个p节点:
<p>试问卷帘人</p>
步骤2.1:bs对象.节点名.previous_siblingg——获取第p节点前面的h3节点:
<h3>李清照<span>(宋)</span></h3>
步骤2.2:获取到的数据类型为tag对象:
<class 'bs4.element.Tag'>
4. bs对象.节点名.previous_siblings 获取前面的所有兄弟节点
语法格式:bs对象.节点名.previous_siblings
返回值:生成器。
取值方法:
方法1:for循环从生成器中取值for i,child in enumerate(bs_duixiang.p.previous_siblings)
方法2:用list函数从生成器中取值list(enumerate(bs_duixiang.p.previous_siblings))
# 声明一个html_str字符串变量,存储部分HTML代码
html_str = """ <html> <head><meta charset="utf-8"><title>古诗2首</title></head> <body> <div class="poems" id="section1"><h2>如梦令</h2><h3>李清照<span>(宋)</span></h3><p>试问卷帘人</p><p>却道海棠依旧</p><p>知否?知否?</p><p>应是绿肥红瘦</p></div> <div class="poems" id="section2"><h2>无题</h2><h3>佚名</h3> <p>本是青灯不归客</p><p>却因浊酒留风尘</p><p>终是庄周梦了蝶</p><p>你是恩赐也是劫</p> </div> </body> </html> """
# 2.1 BeautifulSoup类(要解析的字符串,解析器)
# 2.2 传入要解析的字符串html_str和解析器lxml,实例化类得到一个BeautifulSoup对象
bs_duixiang = BeautifulSoup(html_str, 'lxml')
print("步骤1:bs对象.节点名p——获取第1个p节点:")
print(bs_duixiang.p,'\n')
print("步骤2.1:bs对象.节点名p.previous_siblings——获取第1个p节点前面的所有兄弟节点:")
print(bs_duixiang.p.previous_siblings,'\n')
print("步骤2.2:获取到的数据类型为生成器:")
print(type(bs_duixiang.p.previous_siblings),'\n')
print("取值方法1:利用for循环从生成器中取值,i表示元素序号,child表示元素:")
for i,child in enumerate(bs_duixiang.p.previous_siblings) :
print(i, child)
print('\n')
print("取值方法2:用list函数从生成器中取值,得到的是列表:")
print(list(enumerate(bs_duixiang.p.previous_siblings)))
【终端输出】
步骤1:bs对象.节点名p——获取第1个p节点:
<p>试问卷帘人</p>
步骤2.1:bs对象.节点名p.previous_siblings——获取第1个p节点前面的所有兄弟节点:
<generator object PageElement.previous_siblings at 0x000001C8C4B05900>
步骤2.2:获取到的数据类型为生成器:
<class 'generator'>
取值方法1:利用for循环从生成器中取值,i表示元素序号,child表示元素:
0 <h3>李清照<span>(宋)</span></h3>
1 <h2>如梦令</h2>
取值方法2:用list函数从生成器中取值,得到的是列表:
[(0, <h3>李清照<span>(宋)</span></h3>), (1, <h2>如梦令</h2>)]
5. 总结

边栏推荐
- Koa 源码剖析
- Oracle11.2.0.4-rac cluster hang analysis record
- 关于印发宝安区重点产业项目和总部项目遴选及用地保障实施细则(2022修订版)的通知
- Flume configuration 1 - basic case
- Nutch2.1在Windows平台上使用Eclipse debug 存储在MySQL的搭建过程
- 数据链路层
- [buuctf.reverse] 142_[SUCTF2019]babyunic
- Flume配置4——自定義Source+Sink
- 通过MeterSphere和DataEase实现项目Bug处理进展实时跟进
- NLP - GIZA++ 实现词对齐
猜你喜欢

Flume配置3——拦截器过滤

Flume configuration 1 - basic case

Configuration du Flume 4 - source personnalisée + sink

一次 Keepalived 高可用的事故,让我重学了一遍它!

mapbox-gl开发教程(十二):加载面图层数据
![[compilation principle] semantic analysis](/img/2e/9c17da3dbc758b2985e55201c73f99.png)
[compilation principle] semantic analysis

Detailed description of gaussdb (DWS) complex and diverse resource load management methods

Hangfire详解

How to solve the problem of insufficient memory space in Apple iPhone upgrade system?

ASP.Net Core创建Razor页面上传多个文件(缓冲方式)(续)
随机推荐
Withdrawal of user curve in qualified currency means loss
Codeforces Global Round 21 C D E
Snowflake ID, distributed unique ID
并查集(Union-Find)
畫虎國手孟祥順數字藏品限量發售,隨贈虎年茅臺
Jupyter服务安装及启动
Understanding of software test logic coverage
go: 如何编写一个正确的udp服务端
Flume理论
proxmox集群节点崩溃处理
PowerShell command outputs only a list of directories
Flume配置4——自定義Source+Sink
3-2 host discovery - layer 3 discovery
2021 CCPC 哈尔滨 J. Local Minimum (思维题)
Following the crowd hurts you
[compilation principle] type check
How to solve the problem of insufficient memory space in Apple iPhone upgrade system?
XSS漏洞
Tag based augmented reality using OpenCV
第二章(物理层)