我环顾四周,找到了已经解决或应该解决此确切问题的解决方案,但不适用于这种情况。有人有理由为什么here会起作用,而不是在这里吗?或者只是简单地显示我在做错什么,我就可以找出差异。
请记住,我只是提供了html的摘要,其中包含更多内容,它们包含相同的span
和class='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
答案 0 :(得分:2)
问题是b
标签没有兄弟姐妹。像这样格式化时更容易看到:
<span class="boldText">
<b>Status:</b>
</span>
Questionable
<br/>
看看b
是span
的唯一孩子吗?字符串“ Questionable”实际上是父项span
的兄弟姐妹,因此您需要按以下步骤导航到它:
print(soup.find('b', string='Status:').parent.next_sibling)
# => 'Questionable'