2013-04-25 20 views

Antwort

1

sieht es so aus der Art und Weise zu tun ist! so einfach wie das

mit dieser Zeile Sie

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

die alle Textteile innerhalb des aktuellen Elements zusammen verbinden sind, können Sie die decompose Methode 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> 
46

Mit BeautifulStoneSoup in bs4 gegangen, es ist noch einfacher in Python3

from bs4 import BeautifulSoup 

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

Es ist besser, 'get_text()' anstelle von 'getText()' zu verwenden. – SparkAndShine

+1

Warum ist das? Es mag gut sein, aber es wäre hilfreich zu verstehen, warum. –

+11

getText() ist bs3-Syntax und nicht pep8-konform. Es wird wahrscheinlich veraltet sein. –

6

Verwenden get_text(), gibt es den gesamten Text in einem Dokument oder unter ein Tag als einzelne Unicode-Zeichenfolge.

So entfernen Sie alle verschiedenen Script-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 ist:

#!/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()) 
Verwandte Themen