2017-02-02 3 views
1

Я пытаюсь узнать, как работает beautifulsoup, чтобы создать приложение.как распечатать только текст beautifulsoup

Я могу найти и распечатать все элементы с помощью .find_all(), однако они также печатают теги html. Как я могу напечатать ТОЛЬКО текст в этих тегах.

Это то, что у меня есть:

from bs4 import BeautifulSoup 

"""<html> 
<p>1</p> 
<p>2</p> 
<p>3</p> 
""" 

soup = BeautifulSoup(open('index.html'), "html.parser") 
i = soup.find_all('p') 
print i 
+3

Возможный дубликат [Использование BeautifulSoup Извлечение текста без тегов] (HTTP: // stackoverflow.com/questions/23380171/using-beautifulsoup-extract-text-without-tags) – franklinsijo

+0

@franklinsijo Да. Я также связал другой вопрос с тем же вопросом в своем ответе. – Steampunkery

ответ

-1
soup = BeautifulSoup(open('index.html'), "html.parser") 
i = soup.find_all('p') 
for p in i: 
    print p.text 

find_all() будет возвращать список тега, вы должны пройти по нему и использовать tag.text, чтобы получить текст под тегом

Лучше так:

for p in soup.find_all('p'): 
    print p.text 
-1

Я думаю, вы можете делать то, что они делают в this stackoverflow question. Используйте findAll(text=True). Так что в вашем коде:

from bs4 import BeautifulSoup 

"""<html> 
<p>1</p> 
<p>2</p> 
<p>3</p> 
""" 

soup = BeautifulSoup(open('index.html'), "html.parser") 
i = soup.findAll(text=True) 
print i 
+0

это вернет весь текст в код HTML, включая комментарий, это определенно не решение –

+0

включая комментарий? Вы имеете в виду, включая комментарии? – Steampunkery

+0

Объект 'Comment' - это особый тип' NavigableString' –

1

Это может помочь вам: -

from bs4 import BeautifulSoup 
source_code = """<html> 
<p>1</p> 
<p>2</p> 
<p>3</p> 
""" 
soup = BeautifulSoup(source_code) 
print soup.text 

Выход: -

1 
2 
3 

 Смежные вопросы

  • Нет связанных вопросов^_^