2013-04-25 13 views

Odpowiedz

1

wygląda w ten sposób, aby zrobić! takie proste

z tej linii, którą łączą ze sobą wszystkie części tekstu w bieżącym elemencie

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

Można użyć metody rozkładać w BS4:

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

Z BeautifulStoneSoup poszedł w bs4get_text, to jeszcze prostsze w Python3

from bs4 import BeautifulSoup 

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

Jest lepiej używać 'get_text()' zamiast 'getText()'. – SparkAndShine

+1

Dlaczego tak jest? Być może tak jest, ale dobrze byłoby zrozumieć, dlaczego tak się dzieje. –

+11

getText() jest składnią bs3 i nie jest zgodny z pep8. Prawdopodobnie będzie przestarzałe. –

6

użytkowania get_text(), zwraca cały tekst w dokumencie lub pod tag, jako pojedynczy ciąg znaków Unicode.

Na przykład, usuń wszystkie inne znaczniki skryptów z następującym tekstem:

<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> 

Oczekiwany wynik to:

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

Oto kod źródłowy:

#!/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()) 
Powiązane problemy