假设我了解您的情况,我可以建议一种更简单的解决方法。
假设你有这样的 HTML。
<span id="first">I'm first</span>
<span>first sibling</span>
<span>second sibling</span>
<span>third sibling</span>
<span>fourth sibling</span>
<span>fifth sibling</span>
然后你可以找到第一个 span 元素,然后使用这样的代码识别它的所有兄弟元素。
>>> import bs4
>>> soup = bs4.BeautifulSoup(open('temp.htm').read(), 'lxml')
>>> first = soup.select('#first')
>>> first
[<span id="first">I'm first</span>]
此行仅用于显示findNextSiblings 方法为您提供的内容。
>>> first[0].findNextSiblings()
[<span>first sibling</span>, <span>second sibling</span>, <span>third sibling</span>, <span>fourth sibling</span>, <span>fifth sibling</span>]
这意味着,一旦您有了指向第一个兄弟的指针,您就可以通过一个 for 语句获取所有其他兄弟。
>>> for sib in first[0].findNextSiblings():
... sib.text
...
'first sibling'
'second sibling'
'third sibling'
'fourth sibling'
'fifth sibling'
另一种方法fetchNextSiblings 提供的结果与上面使用的方法相同。
>>> first[0].fetchNextSiblings()
[<span>first sibling</span>, <span>second sibling</span>, <span>third sibling</span>, <span>fourth sibling</span>, <span>fifth sibling</span>]