首页 > 解决方案 > Beautifulsoup - 获取不在特定标签之间的文本(之后但之前
)?

问题描述

我环顾四周,找到了有效或假设适用于这个确切问题的解决方案,但它不适用于这种情况。任何人都有理由为什么它会在这里工作,而不是在这里?或者只是简单地显示我做错了什么,我可以找出差异。

请记住,我只是给出了一个 html 片段,它包含更多具有相同spanclass='boldText'. 我特别想要标签Status:作为其文本,然后是下一个文本/内容。

import bs4 

html1 = '''<span class="boldText"><b>Date:</b>  </span>12/04/2018<br/>
<span class="boldText"><b>Name:</b>  </span>Aaron Rodgers<br/>
<span class="boldText"><b>Status:</b>  </span>Questionable<br/><br/>
<br/>
<br/><br/><br/>'''

soup = bs4.BeautifulSoup(html1,'html.parser') 
status = soup.find(text='Status:').next_sibling

我只是想获取文本:'Questionable'

所以寻找输出:

>>> print (status)
>>> Questionable

标签: pythonbeautifulsoup

解决方案


问题是b标签没有兄弟姐妹。像这样格式化时更容易看到:

<span class="boldText">
    <b>Status:</b>
</span>
Questionable
<br/>

怎么看b是独生子了span?字符串 "Questionable" 实际上是 parent 的兄弟span,因此您需要按如下方式导航到它:

print(soup.find('b', string='Status:').parent.next_sibling)
# => 'Questionable'

推荐阅读