📅  最后修改于: 2023-12-03 15:29:36.419000             🧑  作者: Mango
Beautiful Soup是一个用于HTML和XML文档解析的Python库,其主要作用是将HTML或XML文档转化为Python对象,使得开发者可以方便地筛选出所需的信息。
使用pip安装:
pip install beautifulsoup4
from bs4 import BeautifulSoup
html_doc = """
<html>
<head>
<title>Beautiful Soup-搜索树示例</title>
</head>
<body>
<p class="first">Beautiful Soup 是一个Python库,用于从HTML和XML文件中提取数据。</p>
<p class="second">它能够通过你喜欢的转换器实现惯用的文档导航、查找,修改文档的方式。</p>
<p class="third">在Python 2.x系列中, Beautiful Soup 3 是bs3,但在Python3.x系列中,Beautiful Soup 4才是跟Python3兼容的版本。</p>
<img src="http://www.example.com/img/logo.png" alt="logo">
</body>
</html>
"""
soup = BeautifulSoup(html_doc, 'html.parser')
print(soup.prettify())
其中,html.parser
是解析器的名称,用于指定使用哪种解析器进行解析。运行以上代码,输出的结果如下:
<html>
<head>
<title>
Beautiful Soup-搜索树示例
</title>
</head>
<body>
<p class="first">
Beautiful Soup 是一个Python库,用于从HTML和XML文件中提取数据。
</p>
<p class="second">
它能够通过你喜欢的转换器实现惯用的文档导航、查找,修改文档的方式。
</p>
<p class="third">
在Python 2.x系列中, Beautiful Soup 3 是bs3,但在Python3.x系列中,Beautiful Soup 4才是跟Python3兼容的版本。
</p>
<img alt="logo" src="http://www.example.com/img/logo.png"/>
</body>
</html>
使用Beautiful Soup可以方便地进行标签选择器的筛选,以下是一些常用的方法。
soup.tagName
:返回第一个匹配指定标签名的元素,等同于soup.find(tagName)
。
soup.find(tagName)
:返回第一个匹配指定标签名的元素。
soup.find_all(tagName)
:返回所有匹配指定标签名的元素,返回结果为一个列表。
soup.select(selector)
:返回所有匹配指定CSS选择器的元素,返回结果为一个列表。
print("soup.title:", soup.title)
print("soup.p:", soup.p)
print("soup.find('p'):", soup.find('p'))
print("soup.find_all('p'):", soup.find_all('p'))
print("soup.select('p'):", soup.select('p'))
输出结果:
soup.title: <title>Beautiful Soup-搜索树示例</title>
soup.p: <p class="first">Beautiful Soup 是一个Python库,用于从HTML和XML文件中提取数据。</p>
soup.find('p'): <p class="first">Beautiful Soup 是一个Python库,用于从HTML和XML文件中提取数据。</p>
soup.find_all('p'): [<p class="first">Beautiful Soup 是一个Python库,用于从HTML和XML文件中提取数据。</p>, <p class="second">它能够通过你喜欢的转换器实现惯用的文档导航、查找,修改文档的方式。</p>, <p class="third">在Python 2.x系列中, Beautiful Soup 3 是bs3,但在Python3.x系列中,Beautiful Soup 4才是跟Python3兼容的版本。</p>]
soup.select('p'): [<p class="first">Beautiful Soup 是一个Python库,用于从HTML和XML文件中提取数据。</p>, <p class="second">它能够通过你喜欢的转换器实现惯用的文档导航、查找,修改文档的方式。</p>, <p class="third">在Python 2.x系列中, Beautiful Soup 3 是bs3,但在Python3.x系列中,Beautiful Soup 4才是跟Python3兼容的版本。</p>]
可以使用以下方法获取指定标签的内容。
soup.tagName.string
:返回指定标签的文本内容。
soup.tagName.text
:返回指定标签的文本内容,与string效果相同。
soup.tagName.attrs
:返回指定标签的所有属性,以字典形式存储。
print("soup.title.string:", soup.title.string)
print("soup.p.string:", soup.p.string)
print("soup.img['src']:", soup.img['src'])
print("soup.img.get('alt'):", soup.img.get('alt'))
输出结果:
soup.title.string: Beautiful Soup-搜索树示例
soup.p.string: Beautiful Soup 是一个Python库,用于从HTML和XML文件中提取数据。
soup.img['src']: http://www.example.com/img/logo.png
soup.img.get('alt'): logo
以下两种方式可以修改指定标签的内容。
直接修改标签的string属性。
使用replace_with()方法,将指定标签的内容替换为指定字符串。
print("修改前的内容:")
print(soup.p.string)
soup.p.string.replace_with("修改后的内容")
print("修改后的内容:")
print(soup.p.string)
输出结果:
修改前的内容:
Beautiful Soup 是一个Python库,用于从HTML和XML文件中提取数据。
修改后的内容:
修改后的内容
可以使用以下方法,对指定标签进行操作。
soup.tagName.replace_with(new_tag)
:将指定标签替换为新标签。
soup.tagName.extract()
:将指定标签从文档树中移除。
print("修改前的内容:")
print(soup.prettify())
new_tag = soup.new_tag("h1")
soup.p.replace_with(new_tag)
soup.img.extract()
print("修改后的内容:")
print(soup.prettify())
输出结果:
修改前的内容:
<html>
<head>
<title>
Beautiful Soup-搜索树示例
</title>
</head>
<body>
<p>
修改后的内容
</p>
<p class="second">
它能够通过你喜欢的转换器实现惯用的文档导航、查找,修改文档的方式。
</p>
<p class="third">
在Python 2.x系列中, Beautiful Soup 3 是bs3,但在Python3.x系列中,Beautiful Soup 4才是跟Python3兼容的版本。
</p>
<img alt="logo" src="http://www.example.com/img/logo.png"/>
</body>
</html>
修改后的内容:
<html>
<head>
<title>
Beautiful Soup-搜索树示例
</title>
</head>
<body>
<h1></h1>
<p class="second">
它能够通过你喜欢的转换器实现惯用的文档导航、查找,修改文档的方式。
</p>
<p class="third">
在Python 2.x系列中, Beautiful Soup 3 是bs3,但在Python3.x系列中,Beautiful Soup 4才是跟Python3兼容的版本。
</p>
</body>
</html>
Beautiful Soup可以便捷地将HTML/XML文档解析为Python对象,并提供了丰富的操作方式,使得开发者可以方便地筛选出所需的信息。如果您需要进行爬虫、数据挖掘等操作,建议掌握Beautiful Soup的使用。