2016-02-19 38 views
5

W BeautifulSoup, czy istnieje jakaś różnica między .text i .get_text()?Różnice między .text i .get_text()

Który z nich powinien być preferowany do uzyskania tekstu elementu?

>>> from bs4 import BeautifulSoup 
>>> 
>>> html = "<div>text1 <span>text2</span><div>" 
>>> soup = BeautifulSoup(html, "html.parser") 
>>> div = soup.div 
>>> div.text 
'text1 text2' 
>>> div.get_text() 
'text1 text2' 
+1

Zasadniczo można użyć niestandardowego separatora przy użyciu 'get_text()', i powinien go używać jako '.text' jest własnością prywatną i nie nawet udokumentowane. – Selcuk

+0

@Selcuk tak, osobiście używam 'get_text()' przez cały czas głównie dlatego, że jest jawnie udokumentowany, ale widzę wielu użytkowników bs4 używających '.text' bezpośrednio i ciekawi ich wad tego . Dzięki! – alecxe

+1

Hmm ... co to jest "div.string"? –

Odpowiedz

12

Wygląda na to, że .text is just a property that calls get_text. Dlatego wywołanie get_text bez argumentów jest tym samym co .text. Jednak get_text może również obsługiwać różne argumenty na słowa kluczowe, aby zmienić sposób zachowuje się (separator, strip, types). Jeśli potrzebujesz większej kontroli nad wynikiem, potrzebujesz funkcjonalnej formy.