首页 > 后端开发 > Python教程 > 如何使用 BeautifulSoup 从网页中仅提取可见文本?

如何使用 BeautifulSoup 从网页中仅提取可见文本?

Susan Sarandon
发布: 2024-11-14 18:56:02
原创
186 人浏览过

How to Extract Only Visible Text from Web Pages Using BeautifulSoup?

使用 BeautifulSoup 进行网页文本提取:专门提取可见文本

网页抓取通常涉及从网页中检索特定文本内容。使用广泛使用的 HTML 解析库 BeautifulSoup,您可能会遇到仅提取网页上可见文本的挑战,排除脚本、注释和 CSS 等不需要的元素。

识别可见文本

要确定特定 HTML 元素是否包含可见文本,可以使用 tag_visible 函数。此函数检查目标元素的父元素是否在一组特定的排除标签(例如样式、脚本、头部)内,或者目标元素是否是注释。如果满足任一条件,该函数将返回 False,表示该元素不被视为可见。

提取可见文本

要从网页中提取可见文本,请按照下列步骤操作:

  1. 从 HTML 创建一个 BeautifulSoup 对象body。
  2. 使用 findAll(text=True) 方法查找 HTML 中的所有文本。
  3. 使用 tag_visible 函数过滤提取的文本,以消除不需要的元素。
  4. 加入将可见文本串在一起,删除前导和尾随空格。

示例用法

下面的代码演示了如何使用这些技术从网页中提取可见文本:

from bs4 import BeautifulSoup
from bs4.element import Comment
import urllib.request

def tag_visible(element):
    if element.parent.name in ['style', 'script', 'head', 'title', 'meta', '[document]']:
        return False
    if isinstance(element, Comment):
        return False
    return True

def text_from_html(body):
    soup = BeautifulSoup(body, 'html.parser')
    texts = soup.findAll(text=True)
    visible_texts = filter(tag_visible, texts)
    return u" ".join(t.strip() for t in visible_texts)

html = urllib.request.urlopen('http://www.nytimes.com/2009/12/21/us/21storm.html').read()
print(text_from_html(html))
登录后复制

通过利用这种方法,您可以有效地从网页中抓取可见文本页面,排除脚本、评论和其他隐藏元素中不相关的内容。

以上是如何使用 BeautifulSoup 从网页中仅提取可见文本?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板