使用BeautifulSoup4从嵌套span标签提取指定文本的问题
解决方法
以下几种方式可以单独提取出「Felix Wong」:
方法1:直接获取父span的文本节点
目标名称是父<span>的直接子文本节点,可通过contents访问第一个子元素,再去除多余空格:from bs4 import BeautifulSoup html = '<span>Felix Wong <span class="drivers">+3 drivers</span></span>' soup = BeautifulSoup(html, 'html.parser') parent_span = soup.find('span') name = parent_span.contents[0].strip() print(name) # 输出 Felix Wong方法2:移除嵌套子标签后提取文本
先找到并删除嵌套的<span class="drivers">标签,再用get_text()获取父标签的剩余文本:from bs4 import BeautifulSoup html = '<span>Felix Wong <span class="drivers">+3 drivers</span></span>' soup = BeautifulSoup(html, 'html.parser') parent_span = soup.find('span') child_span = parent_span.find('span', class_='drivers') child_span.decompose() # 移除子标签 name = parent_span.get_text().strip() print(name) # 输出 Felix Wong方法3:通过stripped_strings迭代取第一个元素
stripped_strings会迭代标签下所有非空白文本节点,取第一个即可得到目标名称:from bs4 import BeautifulSoup html = '<span>Felix Wong <span class="drivers">+3 drivers</span></span>' soup = BeautifulSoup(html, 'html.parser') parent_span = soup.find('span') name = next(parent_span.stripped_strings) print(name) # 输出 Felix Wong
内容的提问来源于stack exchange,提问作者Felix Wong Plasencia
相关产品推荐
相关产品推荐

