安迪Python

V1

2022/06/23阅读:14主题:默认主题

13 `bs_duixiang.tag标签`得到一个tag对象

13 bs_duixiang.tag标签得到一个tag对象

13.1 BeautifulSoup类提取数据的方法

选择器的作用:操作BeautifulSoup对象,查找、定位元素,并提取数据。

13_BeautifulSoup提取数据1
13_BeautifulSoup提取数据1

13.2 节点选择器

1. 什么是节点

<h1>一级标题</h1> 
<h2>二级标题</h2>   
<h3>三级标题</h3>   
<p>我是一个段落</p>    

上述代码是一段HTML代码。
h表示标题标签。标题标签一共有6个,从h1到h6,数字越大,字号越小。
p表示段落标签,用于给段落分段,在网页上独占一行。

在HTML代码中的我把h p叫做HTML标签。
在Python中,我们把h p叫做节点标签,即tag标签。
【温馨提示】这样的表述更方便初学者理解节点,和很多官方的教材有出入,仅供参考。

2. 提取节点

语法格式:bs对象.tag名称
tag指节点名称。
返回值:节点对象。

用html.parser解析器提取h2节点

html_str = """
<h2>霸王别姬</h2>
<span>中国内地、中国香港</span>
<span>171分钟</span>
<h3>剧情简介</h3>
<a href="https://maoyan.com/"></a>
"""

# 步骤1:从bs4 库中导入BeautifulSoup类
from bs4 import BeautifulSoup

# 步骤2:传入参数,实例化BeautifulSoup类
# 参数1是要解析的HTML字符串
# 参数2是解析器(这里用html.parser解析器)
# 实例化后得到一个BeautifulSoup对象
# bs_duixiang = <class 'bs4.BeautifulSoup'>
bs_duixiang  = BeautifulSoup(html_str, 'html.parser')
print("解析器解析后得到一个BeautifulSoup对象:")
print(type(bs_duixiang ),'\n')

# bs对象.tag名称提取节点
print("这里提取h2节点")
print(bs_duixiang.h2,'\n')

print("提取到的节点数据类型为tag对象:")
print(type(bs_duixiang .h2))

【终端输出】

解析器解析后得到一个BeautifulSoup对象:
<class 'bs4.BeautifulSoup'> 

这里提取h2节点
<h2>霸王别姬</h2> 

提取到的节点数据类型为tag对象:
<class 'bs4.element.Tag'>

运行代码后,成功输出了h2节点。

用lxml解析器提取span节点

html_str = """
<h2>霸王别姬</h2>
<span>中国内地、中国香港</span>
<span>171分钟</span>
<h3>剧情简介</h3>
<a href="https://maoyan.com/"></a>
"""

# 步骤1:从bs4 库中导入BeautifulSoup类
from bs4 import BeautifulSoup

# 步骤2:传入参数,实例化BeautifulSoup类
# 参数1是要解析的HTML字符串
# 参数2是解析器(这里用lxml解析器)
# 实例化后得到一个BeautifulSoup对象
# bs_duixiang = <class 'bs4.BeautifulSoup'>
bs_duixiang  = BeautifulSoup(html_str, 'lxml')
print("解析器解析后得到一个BeautifulSoup对象:")
print(type(bs_duixiang ),'\n')

# bs对象.tag名称提取节点
print("这里提取span节点")
print(bs_duixiang.span,'\n')

print("提取到的节点数据类型为tag对象:")
print(type(bs_duixiang .span))

【终端输出】

解析器解析后得到一个BeautifulSoup对象:
<class 'bs4.BeautifulSoup'> 

这里提取span节点
<span>中国内地、中国香港</span> 

提取到的节点数据类型为tag对象:
<class 'bs4.element.Tag'>

上述html_str字符中有2个标签。
代码运行成功后,我们提取到了中国内地、中国香港标签。
即2个标签中的第1个。
那是因为当html代码中存在多个相同的节点,节点选择器只会提取第1个节点。

13.3 总结

14_网络爬虫1
14_网络爬虫1

分类:

后端

标签:

Python

作者介绍

安迪Python
V1