Mam jakiś tekst:
text = <p><b>test</b><br/></p>
Czytałem z piękną zupą 4:
soup = BeautifulSoup(text, "html.parser") # soup: <p><b>test</b><br/></p>
Następnie chcę uzyskać węzły tekstowe:
text_nodes = soup.find_all(text=True)
Ale kod, którego kod został zmieniony, zostaje w trakcie tego procesu pozbawiony ucieczki: text_nodes: ['<b>test</b>']
Jak zapobiec konwersji kroku find_all()
moich znaczników ze znakami ucieczki HTML?
1 odpowiedź
W przypadku text=True
myślę, że nie ma opcji, aby zachować ciąg bez zmian.
Moje rozwiązanie to po prostu uciec od wyniku za pomocą pętli
from bs4 import BeautifulSoup
from html import escape
text = '<p><b>test</b><br/></p>'
soup = BeautifulSoup(text, "html.parser")
text_nodes = [escape(x) for x in soup.strings]
print(text_nodes)
# ['<b>test</b>']
soup.strings
to krótsza wersja soup.find_all(text=True)
.
Podobne pytania
Nowe pytania
python-3.x
W przypadku pytań dotyczących programowania w języku Python, które są specyficzne dla wersji 3+ tego języka. Użyj bardziej ogólnego tagu [python] we wszystkich pytaniach Pythona i dodaj ten tylko, jeśli twoje pytanie dotyczy wersji. Użyj znaczników [python-2.x] w pytaniach o Python 2.