Beautifulsoup-在特定标签之间(不是<br/>之后还是之前)获取文本?

时间:2018-12-18 14:54:22

标签: python beautifulsoup

我环顾四周,找到了已经解决或应该解决此确切问题的解决方案,但不适用于这种情况。有人有理由为什么here会起作用,而不是在这里吗?或者只是简单地显示我在做错什么,我就可以找出差异。

请记住,我只是提供了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

1 个答案:

答案 0 :(得分:2)

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

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

看看bspan的唯一孩子吗?字符串“ Questionable”实际上是父项span的兄弟姐妹,因此您需要按以下步骤导航到它:

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