使用 BeautifulSoup 从 html 获取特定文本
Getting a specific text from html using BeautifulSoup
我有这个 .html 代码:
<div id="content">
<ul id="tree">
<li xmlns="" class="level top failed open">
<span><em class="time">
<div class="time">1.89 s</div>
</em>I need to get this text</span>
我只需要获取所有其他标签之外的文本(文本是:我需要获取此文本)。
我正在尝试使用这段代码:
path = document.find('li', class_='level top').find_all("em")[-1].next_sibling
if not path:
path = document.find('li', class_='level top failed open').find_all("em")[-1].next_sibling
return path
但是我得到一个错误:AttributeError: 'NoneType' object has no attribute 'find_all'.
有人知道如何访问此文本吗?
谢谢!
尝试使用这个方法:
.find_all("span", text=True)
因为文本在 span 元素中
您可以应用 .contents
,它将生成一个输出列表,所需的是 [-1]
html = '''
<div id="content">
<ul id="tree">
<li class="level top failed open" xmlns="">
<span>
<em class="time">
<div class="time">
1.89 s
</div>
</em>
I need to get this text
</span>
</li>
</ul>
</div>
'''
from bs4 import BeautifulSoup
soup=BeautifulSoup(html,'html.parser')
#print(soup.prettify())
txt= soup.select_one('#tree > li > span').contents[-1]
print(txt)
输出:
I need to get this text
我有这个 .html 代码:
<div id="content">
<ul id="tree">
<li xmlns="" class="level top failed open">
<span><em class="time">
<div class="time">1.89 s</div>
</em>I need to get this text</span>
我只需要获取所有其他标签之外的文本(文本是:我需要获取此文本)。
我正在尝试使用这段代码:
path = document.find('li', class_='level top').find_all("em")[-1].next_sibling
if not path:
path = document.find('li', class_='level top failed open').find_all("em")[-1].next_sibling
return path
但是我得到一个错误:AttributeError: 'NoneType' object has no attribute 'find_all'.
有人知道如何访问此文本吗?
谢谢!
尝试使用这个方法:
.find_all("span", text=True)
因为文本在 span 元素中
您可以应用 .contents
,它将生成一个输出列表,所需的是 [-1]
html = '''
<div id="content">
<ul id="tree">
<li class="level top failed open" xmlns="">
<span>
<em class="time">
<div class="time">
1.89 s
</div>
</em>
I need to get this text
</span>
</li>
</ul>
</div>
'''
from bs4 import BeautifulSoup
soup=BeautifulSoup(html,'html.parser')
#print(soup.prettify())
txt= soup.select_one('#tree > li > span').contents[-1]
print(txt)
输出:
I need to get this text