Получить текстовое содержимое HTML-тегов, таких как свойство js textcontent для python - PullRequest
0 голосов
/ 02 марта 2019

Я хочу получить полный текст каждого тега.Например, если у нас есть что-то вроде этого:

html_code = """
<body>
    <h1>hello<b>there</b>how are you?</h1>
</body>"""

Я хочу получить такой результат:

  • Для тега body: '' (ничего- без дочерних элементов)

  • Для тега h1: 'hello there how are you?' (со всеми дочерними элементами)

  • Для b tag: 'there' (со всеми дочерними элементами)

Я пробовал много вещей, но ни один из них не дает мне такой результат.Есть предложения?

1 Ответ

0 голосов
/ 04 марта 2019

Вам нужно будет работать с .find() или .find_all(), независимо от того, хотите ли вы включить дочерние теги или нет, используйте параметр recursive:

html_code = """
<body>
    <h1>hello<b>there</b>how are you?</h1>
</body>"""

import bs4

soup = bs4.BeautifulSoup(html_code, 'html.parser')


body_text = soup.body.find_all(text=True, recursive=False) 
h1_text = soup.h1.find_all(text=True, recursive=True) 
b_text = soup.b.find_all(text=True, recursive=False) 

body_text = ' '.join(body_text).strip()
h1_text = ' '.join(h1_text).strip()
b_text = ' '.join(b_text).strip()


print ('body: %s\nh1: %s\nb: %s' %(body_text, h1_text, b_text))

Вывод:

body: 
h1: hello there how are you?
b: there
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...