首页 > 解决方案 > 如何使用python从文本中删除html标签?

问题描述

我是使用 python 的新手,我正在尝试创建一个简单的脚本,从 Urban Dictionary 中打印出当天的单词。

    import requests
    from bs4 import BeautifulSoup

    # requests urban dictionary home page 
    r = requests.get('https://www.urbandictionary.com')

    soup = BeautifulSoup(r.text, 'html.parser')

    # finds the title
    title = soup.find('title').text

    print(title)

    # finds the definition
    definition = soup.find('meta', attrs={'property': 'og:description'})

    print(definition)

我使用“.text”作为标题来摆脱 html 标签并且它可以工作,但是当我尝试在定义上使用它时,所有文本都消失了。因此,此时定义打印出带有 html 标签。除了“.text”之外,还有什么其他方法可以删除 html 标签。当我尝试将输出粘贴到此处时,它的一部分没有显示出来,所以这里是输出的图片

这是我第一次在这里发帖,所以如果我没有正确格式化我的问题,我很抱歉,但任何帮助将不胜感激。

标签: pythonhtmlstring

解决方案


...当我尝试text在定义上使用 [属性] 时,所有文本都消失了...

这是因为您定位的标签如下所示:

<meta content="foo bar baz..." name="Description" property="og:description">

当您尝试text在 Beautiful Soup 中访问此对象的属性时,没有任何文本是该元素的子元素。相反,您正在寻找提取“内容”属性,您可以使用方括号“数组”样式表示法:

definition['content']

此功能记录在 Beautiful Soup 文档的属性部分。


推荐阅读