当前位置: 首页 > 面试题库 >

在Beautifulsoup Python上排除不需要的标签

陆飞龙
2023-03-14
问题内容
<span>
  I Like
  <span class='unwanted'> to punch </span>
   your face
 </span>

如何打印“我喜欢你的脸”而不是“我喜欢打你的脸”

我试过了

lala = soup.find_all('span')
for p in lala:
 if not p.find(class_='unwanted'):
    print p.text

但它给出“ TypeError:find()不包含关键字参数”


问题答案:

您可以extract()先删除不需要的标签,然后再获取文字。

但是它保留了所有内容'\n'spaces因此您需要一些工作才能删除它们。

data = '''<span>
  I Like
  <span class='unwanted'> to punch </span>
   your face
 <span>'''

from bs4 import BeautifulSoup as BS

soup = BS(data, 'html.parser')

external_span = soup.find('span')

print("1 HTML:", external_span)
print("1 TEXT:", external_span.text.strip())

unwanted = external_span.find('span')
unwanted.extract()

print("2 HTML:", external_span)
print("2 TEXT:", external_span.text.strip())

结果

1 HTML: <span>
  I Like
  <span class="unwanted"> to punch </span>
   your face
 <span></span></span>
1 TEXT: I Like
   to punch 
   your face
2 HTML: <span>
  I Like

   your face
 <span></span></span>
2 TEXT: I Like

   your face

您可以跳过Tag外部范围内的每个对象,而仅保留NavigableString对象(HTML中为纯文本)。

data = '''<span>
  I Like
  <span class='unwanted'> to punch </span>
   your face
 <span>'''

from bs4 import BeautifulSoup as BS
import bs4

soup = BS(data, 'html.parser')

external_span = soup.find('span')

text = []
for x in external_span:
    if isinstance(x, bs4.element.NavigableString):
        text.append(x.strip())
print(" ".join(text))

结果

I Like your face


 类似资料:
  • 希望有人能提供帮助,我正在使用以下代码在React应用程序的endpoint执行抓取: 并返回错误:

  • 本文向大家介绍WordPress删除不必要的meta标签,包括了WordPress删除不必要的meta标签的使用技巧和注意事项,需要的朋友参考一下 WordPress默认情况下引用系统 wp_head() 获得很多的 meta 标签,其中有一些不太必要,所以我们可以通过 add_filter 和 remove_action 删除这些标签。 打开主题下的 functions.php 文件,加入下面的

  • 问题内容: 我正在通过批处理文件运行文件 批处理文件: SQL文件abc.sql: Output.txt: 请帮助我删除output.txt文件开头和结尾的多余数据。 问题答案: 似乎是您要找的东西; [-沉默的]](https://docs.oracle.com/cd/B10501_01/server.920/a90842/ch4.htm#1006196) 禁止所有SQL * Plus信息和提示

  • 我们希望从web应用程序部署(WAR文件)中排除。 因此,我们在中有以下配置: 在Wildfly日志中,我看到是作为添加的。但是在搜索时,我只看到以下内容: 2015-04-03 15:22:11,971 DEBUG[org.jboss.modules](ServerService线程池--12)模块javax.servlet.jstl.api:main由本地模块加载器@1f7c9157定义(查找

  • 问题内容: 这是我的.htaccess文件: 这是app.js 这是aboutID.html 当我转到它时效果很好,即使我执行了cmd + r刷新,它仍然可以正常加载页面。 如果我从应用程序内单击链接并转到它,则效果很好。 问题是如果我尝试直接进入或执行硬刷新角度路由不再起作用,并且所有变量都像这样输出 我也有标签。 -附加文件- index.html 来自app.js的路由段 普通的url 可以

  • 我正在设置我的第一个Ionic React应用程序。我使用Ionic 5创建了一个应用程序并使用了应用内购买2插件。 我想测试一下,所以我把签名的APK上传到Play商店。 当我查看Play Store上的应用程序包详细信息时,我发现它需要几个不必要的权限: 所需权限(13) Android准许ACCESS_Rough_LOCATION,android。准许访问android的FINE_位置。准许