Beautiful Soup是Python的一个网页解析库,处理快捷; 支持多种解析器,功能强大。教程细致讲解Beautiful Soup的深入使用、节点选择器、CSS选择器、Beautiful Soup4的方法选择器等重要知识点,是学好爬虫的基础课程。
节点选择器——选择元素的方法
学习目标
- 掌握使用节点选择器选择元素的方法
- 了解被选取元素的类型
- 了解有多个相同节点时返回的节点结果
1. 选取元素的方法
节点选择器就是使用tag对象来选择节点元素。而tag对象与HTML、XML的原生文档中的Tag相同,即标签。
例如:
<title>The Dormouse's story</title>
<a href="http://example.com/elsie class="sister" id="link1">Elsie</a>
title和a标签及里面的内容成为Tag对象。
1.1 格式
获取元素
-
格式:
soup.tag
soup为Beautiful Soup4的对象
-
返回值:节点元素
1.2 示例
from bs4 import BeautifulSoup
html_str = """
<html><head><title>The Dormouse's story</title></head>
<body>
<p class="story">Once upon a time there were three little sisters; and their names were
<a href="http://example.com/elsie" class="sister" id="link1"><span>Elsie</span></a>,
<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
and they lived at the bottom of a well.</p>
<p class="story">...</p>
"""
soup = BeautifulSoup(html_str, 'lxml')
# 抽取title标签
print(soup.title)
# 打印soup.title的类型
print(type(soup.title))
# 抽取a标签
print(soup.a)
# 打印soup.a的类型
print(type(soup.a))
# 输出结果
<title>The Dormouse's story</title>
<class 'bs4.element.Tag'>
<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>
<class 'bs4.element.Tag'>
1.3 结论
通过打印结果,我们能够发现使用tag获取到的对象都是'bs4.element.Tag'
类型,这是BeautifulSoup中一个重要的数据结构。
注意点:
- 需要注意的是当有多个相同的标签的时候,使用此种方式只能获取第一个匹配到的节点,其他的相同节点会被忽略。
2. 总结
(1) 选取元素的方法:
- 只需要在Beautiful Soup对象的后面加上标签名即可,例如:
soup.title
(2) 获取到的节点是tag对象
(3) 当有多个相同节点的时候,只会返回第一个节点