Python .next_同级返回类型NoneType
我是Python新手,正在尝试访问标记的下一个兄弟的信息。HTML代码如下所示: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
<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循环中断并返回一个空数组。有什么想法吗?没有,我无法复制。你有完整的例子吗?