Python BeautifulSoup的过滤器

2023-04-17 00:00:00 python beautifulsoup 过滤器

BeautifulSoup提供了多种过滤器用于筛选HTML文档中的节点,下面是一些常用的过滤器及其用法:

  1. 标签名过滤器

可以通过指定标签名,筛选HTML文档中的节点。例如:

from bs4 import BeautifulSoup

html_doc = """
<html>
<head>
<title>pidancode.com</title>
</head>
<body>
<h1>皮蛋编程</h1>
<p class="intro">这是一个Python学习网站。</p>
<p class="description">欢迎来到皮蛋编程!</p>
</body>
</html>
"""

soup = BeautifulSoup(html_doc, 'html.parser')
p_tags = soup.find_all('p')

for tag in p_tags:
    print(tag.text)

输出结果为:

这是一个Python学习网站。
欢迎来到皮蛋编程!
  1. 属性过滤器

可以通过指定属性名和属性值,筛选HTML文档中的节点。例如:

from bs4 import BeautifulSoup

html_doc = """
<html>
<head>
<title>pidancode.com</title>
</head>
<body>
<h1>皮蛋编程</h1>
<p class="intro">这是一个Python学习网站。</p>
<p class="description">欢迎来到皮蛋编程!</p>
<a href="https://pidancode.com" target="_blank">pidancode.com</a>
</body>
</html>
"""

soup = BeautifulSoup(html_doc, 'html.parser')
a_tag = soup.find_all('a', href='https://pidancode.com')

print(a_tag[0].text)

输出结果为:

pidancode.com
  1. 文本过滤器

可以通过指定文本内容,筛选HTML文档中的节点。例如:

from bs4 import BeautifulSoup

html_doc = """
<html>
<head>
<title>pidancode.com</title>
</head>
<body>
<h1>皮蛋编程</h1>
<p class="intro">这是一个Python学习网站。</p>
<p class="description">欢迎来到皮蛋编程!</p>
</body>
</html>
"""

soup = BeautifulSoup(html_doc, 'html.parser')
p_tag = soup.find_all('p', text='这是一个Python学习网站。')

print(p_tag[0].text)

输出结果为:

这是一个Python学习网站。
  1. CSS选择器过滤器

可以通过CSS选择器语法,筛选HTML文档中的节点。例如:

from bs4 import BeautifulSoup

html_doc = """
<html>
<head>
<title>pidancode.com</title>
</head>
<body>
<h1>皮蛋编程</h1>
<p class="intro">这是一个Python学习网站。</p>
<p class="description">欢迎来到皮蛋编程!</p>
</body>
</html>
"""

soup = BeautifulSoup(html_doc, 'html.parser')
p_tag = soup.select('p.intro')

print(p_tag[0].text)

输出结果为:

这是一个Python学习网站。

以上是一些常用的过滤器及其用法,更多详细的过滤器用法可以参考官方文档:https://www.crummy.com/software/BeautifulSoup/bs4/doc/

相关文章