Python BeautifulSoup get_text() 方法

2023-04-17 00:00:00 python beautifulsoup

BeautifulSoup 是一个 Python 库,用于从 HTML 和 XML 文件中提取数据。get_text() 方法是 BeautifulSoup 提供的一个用于获取 HTML 或 XML 中的文本内容的方法。

在 BeautifulSoup 中,HTML 或 XML 文件都被解析成了一个树形结构。使用 get_text() 方法就可以遍历整个树形结构,并提取其中的文本内容。

get_text() 方法的常用参数包括:

  • separator:指定文本内容之间使用什么字符进行分隔,默认为换行符"\n"。
  • strip:指定是否要去除文本内容前后的空格,默认为 True。
  • filter:指定一个函数作为过滤器,用于过滤不需要的文本内容。

下面是一个示例代码,演示如何使用 get_text() 方法从一个 HTML 中提取文本内容:

import requests
from bs4 import BeautifulSoup

url = "https://www.pidancode.com/"
r = requests.get(url)
soup = BeautifulSoup(r.content, "html.parser")

text = soup.get_text(separator=" ", strip=True)
print(text)

这个代码会从 https://www.pidancode.com/ 这个网页中获取 HTML 内容,并使用 BeautifulSoup 解析成树形结构。然后调用 get_text() 方法,将网页中的所有文本内容提取出来,并使用空格进行分隔,去除前后空格。最后将提取出来的文本内容打印出来。

如果需要过滤掉某些不需要的文本内容,可以将一个函数作为 filter 参数传入 get_text() 方法中。这个函数接收一个字符串作为参数,并返回一个布尔值,表示是否要保留这个字符串。下面是一个示例代码,演示如何使用 filter 参数过滤掉某些文本内容:

import requests
from bs4 import BeautifulSoup

def filter_text(text):
    return "皮蛋编程" not in text

url = "https://www.pidancode.com/"
r = requests.get(url)
soup = BeautifulSoup(r.content, "html.parser")

text = soup.get_text(separator=" ", strip=True, filter=filter_text)
print(text)

这个代码和前一个代码基本一样,只是多了一个 filter_text() 函数。这个函数返回一个布尔值,表示传入的字符串中是否包含“皮蛋编程”。然后将这个函数作为 filter 参数传入 get_text() 方法中,这就会过滤掉所有包含“皮蛋编程”的文本内容。

相关文章