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

DDD
发布: 2024-11-25 18:41:09
原创
730 人浏览过

How to Extract Visible Webpage Text Using BeautifulSoup?

使用 BeautifulSoup 提取可见网页文本

许多网页抓取任务涉及检索网页的可见文本内容,不包括脚本等元素,注释和 CSS 样式。使用 BeautifulSoup,通过正确的方法可以轻松实现这一点。

使用 findAll() 函数时会出现一个常见问题,因为它会检索所有文本节点,包括隐藏在不需要的元素中的节点。为了解决这个问题,我们可以定义一个自定义过滤器来排除特定的标签和评论。

以下代码举例说明了这种方法:

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))
登录后复制

tag_visible 函数检查文本的父元素是否节点匹配任何不需要的标签或者节点是否是注释。然后,通过此过滤器的节点将使用 u" ".join(t.strip() for t invisible_texts) 将可见文本组合成单个字符串。

此方法仅有效地从一个网页,省略脚本和评论等不必要的元素。

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

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