首页 >后端开发 >Python教程 >如何使用BeautifulSoup提取可见网页内容?

如何使用BeautifulSoup提取可见网页内容?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-25 03:27:11467浏览

How to Extract Visible Webpage Content Using BeautifulSoup?

如何有效地抓取可见网页内容

网页抓取涉及从网页中提取特定数据,但限制结果可能具有挑战性仅显示可见文本。 BeautifulSoup,一个流行的网页抓取库,简化了这个过程。

理解问题

要抓取可见文本,排除脚本等元素(<script>)至关重要。 )、注释 (<!-- -->)、CSS (<style>) 和其他不可见</script>

BeautifulSoup 的解决方案

这是一个使用 BeautifulSoup 的 findAll() 方法和自定义过滤器的简单解决方案:

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

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 " ".join(t.strip() for t in visible_texts)

html = urlopen('http://www.nytimes.com/2009/12/21/us/21storm.html').read()
print(text_from_html(html))

解释

code:

  • 定义函数 tag_visible() 来排除不需要的标签和注释。
  • 使用 filter() 将 tag_visible() 函数应用于在以下位置找到的所有文本元素(文本) BeautifulSoup 对象。
  • 将可见文本合并为一个string.
  • 使用 urlopen() 获取指定 URL 的 HTML。

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn