Unter der Annahme, dass ich Ihre Situation zu verstehen, kann ich einen einfacheren Weg zu gehen darüber vor.
Angenommen, Sie haben HTML so.
<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>
Dann können Sie das erste span
Element finden und dann alle seine Geschwister wie dies unter Verwendung von Code identifizieren.
>>> import bs4
>>> soup = bs4.BeautifulSoup(open('temp.htm').read(), 'lxml')
>>> first = soup.select('#first')
>>> first
[<span id="first">I'm first</span>]
Diese Linie soll lediglich angezeigt werden, was die findNextSiblings
Methode gibt Ihnen.
>>> first[0].findNextSiblings()
[<span>first sibling</span>, <span>second sibling</span>, <span>third sibling</span>, <span>fourth sibling</span>, <span>fifth sibling</span>]
Das bedeutet, dass, wenn Sie einen Zeiger auf das erste Geschwister haben Sie alle anderen mit einem einzigen for
Aussage zu bekommen.
>>> for sib in first[0].findNextSiblings():
... sib.text
...
'first sibling'
'second sibling'
'third sibling'
'fourth sibling'
'fifth sibling'
Eine weitere Methode stellt fetchNextSiblings
die gleichen Ergebnisse wie die oben verwendeten.
>>> first[0].fetchNextSiblings()
[<span>first sibling</span>, <span>second sibling</span>, <span>third sibling</span>, <span>fourth sibling</span>, <span>fifth sibling</span>]
Vielen Dank für Ihren Vorschlag. Ich könnte mein Problem lösen, indem ich auf Geschwister [Index + 2] anstelle von Index + 1 zugreife. Der Inhalt wurde in
Klammern verschachtelt, und ich habe auf diese Klammern zugegriffen, wenn ich index + 1 verwendet habe. – Ollie
Gern geschehen. Ich habe auf diese Weise geantwortet, weil ich dachte, Sie könnten es nützlich finden, und ich konnte nicht genau sagen, welches Problem Sie bekämpft haben. –
Eigentlich habe ich nicht realisiert, dass diese
Klammern eine eigene Linie bilden. Ich dachte, sie gehören zu den Linien, die ich betrachtete. – Ollie