Python / BeautifulSoup - wie entferne ich alle Tags aus einem Element?


Antworten:


102

Mit BeautifulStoneSoupgone in bs4, es ist noch einfacher in Python3

from bs4 import BeautifulSoup

soup = BeautifulSoup(html)
text = soup.get_text()
print(text)

6
Es ist besser zu verwenden get_text()als getText().
SparkAndShine

2
Warum das? Es mag durchaus der Fall sein, aber es wäre hilfreich zu verstehen, warum.
Thomas Kimber

21
getText () ist bs3-Syntax und nicht pep8-kompatibel. Es wird wahrscheinlich veraltet sein.
Daniel Smith


11

Verwenden Sie get_text () , um den gesamten Text in einem Dokument oder unter einem Tag als einzelne Unicode-Zeichenfolge zurückzugeben.

Entfernen Sie beispielsweise alle verschiedenen Skript-Tags aus dem folgenden Text:

<td><a href="http://www.irit.fr/SC">Signal et Communication</a>
<br/><a href="http://www.irit.fr/IRT">Ingénierie Réseaux et Télécommunications</a>
</td>

Das erwartete Ergebnis ist:

Signal et Communication
Ingénierie Réseaux et Télécommunications

Hier ist der Quellcode:

#!/usr/bin/env python3
from bs4 import BeautifulSoup

text = '''
<td><a href="http://www.irit.fr/SC">Signal et Communication</a>
<br/><a href="http://www.irit.fr/IRT">Ingénierie Réseaux et Télécommunications</a>
</td>
'''
soup = BeautifulSoup(text)

print(soup.get_text())

7

Sie können die Zerlegungsmethode in bs4 verwenden:

soup = bs4.BeautifulSoup('<body><a href="http://example.com/">I linked to <i>example.com</i></a></body>')

for a in soup.find('a').children:
    if isinstance(a,bs4.element.Tag):
        a.decompose()

print soup

Out: <html><body><a href="http://example.com/">I linked to </a></body></html>

1

es sieht so aus, als wäre das der richtige Weg! so einfach ist das

Mit dieser Zeile verbinden Sie alle Textteile innerhalb des aktuellen Elements

''.join(htmlelement.find(text=True))

0

Hier ist der Quellcode: Sie können den Text erhalten, der genau in der URL enthalten ist

URL = ''
page = requests.get(URL)
soup = bs4.BeautifulSoup(page.content,'html.parser').get_text()
print(soup)

0

Code, um den Inhalt einfach als Text anstelle von HTML abzurufen:

Der Parameter 'html_text' ist die Zeichenfolge, die Sie in dieser Funktion übergeben, um den Text abzurufen

from bs4 import BeautifulSoup

soup = BeautifulSoup(html_text, 'lxml')
text = soup.get_text()
print(text)

Hinzugefügt, überprüfen Sie es einfach.
Shaurya Sheth
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.