Python .next_同级返回类型NoneType

Python .next_同级返回类型NoneType,python,beautifulsoup,Python,Beautifulsoup,我是Python新手,正在尝试访问标记的下一个兄弟的信息。HTML代码如下所示: <h4> <i> <b>"Title"</b> </i> </h4> <i>"Description"</i> <h4> <i> <b>"Title"</b> </i> </h4> <i>"Descrip

我是Python新手,正在尝试访问标记的下一个兄弟的信息。HTML代码如下所示:

<h4>
    <i>
        <b>"Title"</b>
    </i>
</h4>
<i>"Description"</i>
<h4>
<i>
<b>"Title"</b>
</i>
</h4>
<i>"Description"</i>
<i>"Description2"</i>
<h4>
<i>
<b>"Title2"</b>
</i>
</h4>
程序返回siblingType变量为'NoneType',而sibling变量为空,显然应为i类型


我在这里做错了什么?

您可以忽略“h4”和“I”之间的换行符。此类节点的类型为
NavigableString

另一种方法是搜索下一个类型为
Tag
的非空节点,然后在遇到另一个“h4”时中断循环:

array = []
sibling = title.next_sibling

while True:
    while sibling and not isinstance(sibling, bs4.element.Tag):
        sibling = sibling.next_sibling
    if sibling is None or sibling.name == "h4":
        break
    array.append(sibling.get_text())
    sibling = sibling.next_sibling

print(array)
你会得到:

['"Description"']
['"Description"', '"Description2"']
此解决方案也适用于以下情况:

<h4>
    <i>
        <b>"Title"</b>
    </i>
</h4>
<i>"Description"</i>
<h4>
<i>
<b>"Title"</b>
</i>
</h4>
<i>"Description"</i>
<i>"Description2"</i>
<h4>
<i>
<b>"Title2"</b>
</i>
</h4>

对于BeautifulSoup,示例中“h4”的下一个兄弟是“h4”和“i”之间的换行符。感谢您的回复。这是编写while循环的一种更好的方法,但出于某种奇怪的原因,我的兄弟不是“navigablesting”类型,而是“NoneType”。因此,while循环中断并返回一个空数组。有什么想法吗?没有,我无法复制。你有完整的例子吗?