chciałbym uniknąć nextSibling, począwszy od pytania, chcesz to wszystko aż do następny <a>
, niezależnie od tego, czy jest to element rodzeństwa, elementu nadrzędnego czy podrzędnego.
Dlatego uważam, że najlepszym sposobem jest znalezienie węzła, który jest następnym elementem <a>
i rekurencyjnie do tego czasu, dodając każdy napotkany łańcuch jako napotkany. Może być konieczne wyczyszczenie poniższego kodu, jeśli HTML znacznie różni się od próbki, ale coś takiego powinno zadziałać:
from bs4 import BeautifulSoup
#by taking the `html` variable from the question.
html = BeautifulSoup(html)
firstBigTag = html.find_all('big')[0]
nextATag = firstBigTag.find_next('a')
def loopUntilA(text, firstElement):
text += firstElement.string
if (firstElement.next.next == nextATag):
return text
else:
#Using double next to skip the string nodes themselves
return loopUntilA(text, firstElement.next.next)
targetString = loopUntilA('', firstBigTag)
print targetString
tak, dokładnie tak, chcę dołączaj wszystko do następnego tagu "a" i może istnieć dowolna liczba tagów, tekstów pomiędzy pierwszym znacznikiem "dużym" a pierwszym znacznikiem "a" –