Dowiedz się więcej o tym, jak poruszać through the parse tree in BeautifulSoup
. Drzewo analizy ma wartości tags
i NavigableStrings
(ponieważ TO JEST TEKST). Przykładem
from BeautifulSoup import BeautifulSoup
doc = ['<html><head><title>Page title</title></head>',
'<body><p id="firstpara" align="center">This is paragraph <b>one</b>.',
'<p id="secondpara" align="blah">This is paragraph <b>two</b>.',
'</html>']
soup = BeautifulSoup(''.join(doc))
print soup.prettify()
# <html>
# <head>
# <title>
# Page title
# </title>
# </head>
# <body>
# <p id="firstpara" align="center">
# This is paragraph
# <b>
# one
# </b>
# .
# </p>
# <p id="secondpara" align="blah">
# This is paragraph
# <b>
# two
# </b>
# .
# </p>
# </body>
# </html>
Aby przesunąć w dół drzewa parsującej masz contents
i string
.
-
zawartość jest uporządkowana lista Tag i NavigableString obiektów zawarty w elemencie strony
-
jeśli znacznik ma tylko jeden węzeł podrzędny, a węzeł dziecko jest string, węzeł podrzędny jest dostępny jako tag.string, a także tag.contents [0]
Dla powyższego, to znaczy można uzyskać
soup.b.string
# u'one'
soup.b.contents[0]
# u'one'
Dla wielu dzieci węzłów, można mieć na przykład
pTag = soup.p
pTag.contents
# [u'This is paragraph ', <b>one</b>, u'.']
więc tutaj można grać z contents
i uzyskać zawartość w pożądanym indeksie.
Możesz także powtórzyć tag, jest to skrót. Na przykład,
for i in soup.body:
print i
# <p id="firstpara" align="center">This is paragraph <b>one</b>.</p>
# <p id="secondpara" align="blah">This is paragraph <b>two</b>.</p>
To by zwróciło "u" \ n komentarz \ nTekst \ nCoś coś \ n TO JEST MÓJ TEKST \ n coś innego \ n'' lub 'u'a commentTextsomethingTHIS IS IS MOJE TEKSTY else else'' które mają więcej tekstu niż wymagane. –
@CristianCiupitu: Oczywiście, masz rację, nie zwracając uwagi tutaj. Aktualizacja. –
To jest jedyne rozwiązanie, które nie zależy od tego, czy tekst jest w sekwencji lub relacji pozycyjnej do konkretnego innego, ale raczej wyciąga cały tekst z określonego znacznika/elementu podczas ignorowania tekstu (lub innej zawartości) znaczników/elementów podrzędnych. Dzięki! To jest niezręczne, ale działa i rozwiązuje mój problem (nie jestem OP, ale miałem podobną potrzebę). – geewiz