📅  最后修改于: 2023-12-03 15:40:27.064000             🧑  作者: Mango
BeautifulSoup
是Python中最受欢迎的标记对象解析库之一。它能够从HTML和XML文档中提取数据并解析它们。它可以处理不良格式的文档,并且通过CSS选择器或一些特定的标记名称找到特定标记。
可以使用pip
命令安装:
pip install beautifulsoup4
使用BeautifulSoup
解析HTML文档非常简单,只需要传入HTML字符串和解析器,即可创建一个解析对象:
from bs4 import BeautifulSoup
html_doc = '''
<html>
<head>
<title>标题</title>
</head>
<body>
<p class="title"><b>文章标题</b></p>
<p class="content">文章内容</p>
<a href="http://example.com">链接</a>
</body>
</html>
'''
soup = BeautifulSoup(html_doc, 'html.parser')
print(soup.prettify())
以上代码将把html_doc
字符串解析成标记对象,并打印出来。其中,prettify()
方法用于美化输出。输出结果如下:
<html>
<head>
<title>
标题
</title>
</head>
<body>
<p class="title">
<b>
文章标题
</b>
</p>
<p class="content">
文章内容
</p>
<a href="http://example.com">
链接
</a>
</body>
</html>
可以使用类似于字典的方式通过标记名称来获得标记对象:
title_tag = soup['title']
print(title_tag)
# 输出:<title>标题</title>
如果有多个标记,可以通过find_all()
方法获取所有的标记,并返回一个列表:
p_tags = soup.find_all('p')
for tag in p_tags:
print(tag)
可以使用CSS选择器来根据属性获取标记对象:
tag = soup.select_one('p.title')
print(tag)
以上代码将获得属性class
为title
的p
标记对象。如果有多个标记,则可以使用select()
方法来获得一个列表。
BeautifulSoup
允许从标记对象中获取各种信息,包括标记对象的名称、属性、文本和子元素。
可以使用name
属性来获取标记对象的名称:
tag = soup.find('p')
print(tag.name)
以上代码将输出p
。
可以使用attrs
属性来获取标记对象的属性,该属性返回一个字典:
tag = soup.find('p')
print(tag.attrs)
以上代码将输出{'class': ['title']}
。
可以使用string
属性来获取标记对象的文本:
tag = soup.find('p', class_='title')
print(tag.string)
以上代码将输出文章标题
。
可以使用children
属性来获取标记对象的嵌套标记,并返回一个生成器:
tag = soup.find('body')
for child in tag.children:
print(child)
以上代码将输出<p class="title"><b>文章标题</b></p>
,<p class="content">文章内容</p>
和<a href="http://example.com">链接</a>
。
可以使用find()
方法定位特定标记,该方法接受一个标记名称和一组属性作为参数。
tag = soup.find('p', {'class': 'title'})
print(tag)
以上代码将输出属性class
为title
的p
标记对象。
可以修改标记对象的文本或属性:
tag = soup.find('p', {'class': 'title'})
tag.string = '新的文章标题'
print(tag)
以上代码将把属性class
为title
的p
标记对象的文本修改为新的文章标题
。
可以使用extract()
方法删除标记对象:
tag = soup.find('p', {'class': 'content'})
tag.extract()
以上代码将删除属性class
为content
的p
标记对象。
BeautifulSoup
是一个强大的标记对象解析库,它能够轻松地解析HTML和XML文档,并提供了许多便捷的方法来获取标记对象、标记属性、标记文本和子元素。在Python开发过程中,BeautifulSoup
经常被用来处理HTML和XML数据,因为它易于使用、功能强大和高效。