Python-BeautifulSoup抓取可见网页文本

基本上,我想使用BeautifulSoup来严格抓取网页上的可见文本。例如,此网页是我的测试用例。我主要想获取正文文本(文章),甚至在这里和那里甚至几个标签名称。我已经尝试过在这个SO问题中返回<script>不想要的标签和html注释的建议。我无法弄清楚该函数所需的参数findAll(),以便仅获取网页上的可见文本。

那么,我应该如何查找除脚本,注释,CSS等之外的所有可见文本?

回答:

尝试这个:

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))

以上是 Python-BeautifulSoup抓取可见网页文本 的全部内容, 来源链接: utcz.com/qa/433397.html

回到顶部