En supposant que je comprends votre situation, je peux suggérer une façon d'aller plus facile à ce sujet.
Supposons que vous ayez un code HTML comme celui-ci.
<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>
Ensuite, vous pouvez trouver le premier élément span
puis identifier tous ses frères et sœurs en utilisant le code comme celui-ci.
>>> import bs4
>>> soup = bs4.BeautifulSoup(open('temp.htm').read(), 'lxml')
>>> first = soup.select('#first')
>>> first
[<span id="first">I'm first</span>]
Cette ligne est destinée simplement à afficher ce que la méthode findNextSiblings
vous donne.
>>> first[0].findNextSiblings()
[<span>first sibling</span>, <span>second sibling</span>, <span>third sibling</span>, <span>fourth sibling</span>, <span>fifth sibling</span>]
Cela signifie que, une fois que vous avez un pointeur sur le premier frère, vous pouvez obtenir tous les autres avec une seule instruction for
.
>>> for sib in first[0].findNextSiblings():
... sib.text
...
'first sibling'
'second sibling'
'third sibling'
'fourth sibling'
'fifth sibling'
Une autre méthode, fetchNextSiblings
fournit les mêmes résultats que celle utilisée ci-dessus.
>>> first[0].fetchNextSiblings()
[<span>first sibling</span>, <span>second sibling</span>, <span>third sibling</span>, <span>fourth sibling</span>, <span>fifth sibling</span>]
Nous vous remercions de votre suggestion. Je pourrais résoudre mon problème en accédant à frère [index + 2] au lieu de index + 1. Le contenu était imbriqué dans les parenthèses
et j'ai accédé à ces parenthèses lorsque j'ai utilisé l'index + 1. – Ollie
De rien. J'ai répondu de cette façon parce que je pensais que vous pourriez trouver cela utile et je ne pourrais pas dire quel problème vous étiez en train de combattre. –
En fait, je n'ai pas réalisé que ces supports
constituaient une ligne qui leur était propre. Je pensais qu'ils faisaient partie des lignes que je regardais. – Ollie