python - 如何使用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 标签。当我尝试将输出粘贴到此处时,它的一部分没有显示出来,所以这里是输出的图片。
这是我第一次在这里发帖,所以如果我没有正确格式化我的问题,我很抱歉,但任何帮助将不胜感激。
解决方案
...当我尝试
text
在定义上使用 [属性] 时,所有文本都消失了...
这是因为您定位的标签如下所示:
<meta content="foo bar baz..." name="Description" property="og:description">
当您尝试text
在 Beautiful Soup 中访问此对象的属性时,没有任何文本是该元素的子元素。相反,您正在寻找提取“内容”属性,您可以使用方括号“数组”样式表示法:
definition['content']
此功能记录在 Beautiful Soup 文档的属性部分。
推荐阅读
- php - Q:在循环语句中插入数据
- ruby - 如何重新处理在红宝石中抛出异常的线程中的项目?
- unit-testing - 为响应式代码编写 Cucumber 场景
- java - 带有 Java 的 Selenium Webdriver(Angular 应用程序)
- python - Pandas:通过组合索引和列名来旋转和展平列
- css - React 样式/css/sass 顺序
- python - 查找列表中每个嵌套列表的最小值和最大值
- python - 用于创建数据库的 XML Python 解析
- c# - 统一设置transform.forward引起transform.position变化
- javascript - React DevExtreme React Grid 过滤行