Как в BeautifulSoup получить текст страницы в с пробелами между текстом в разных тегах

Цель: получить текст из HTML при помощи BeautifulSoup.

Текст берется из любых текстовых тегов, за исключением тегов a .

Не нашел как можно добавить пробел если текст берется из рядом стоящих тегов. Иначе текст сливается между собой.

from bs4 import BeautifulSoup
html = """<html>
<body>
  <div>
         <p>Hello</p><p>World <a href='/'>Ancor World</a></p>
         <p>Cat And</p><p>Dog</p>
  </div>
</body>
</html>"""

soup = BeautifulSoup(html, 'html.parser')
a_tags = soup.find_all('a')
text_a = ' '.join([tag.getText() for tag in a_tags])

body = soup.find('body')
for a in body.find_all('a'):
    a.replace_with(' ')
body_text = body.getText()
print(text_a)
print(body_text)

Вывод кода: Текст ссылок: Ancor World - ок.

Остальной текст в body: HelloWorld Cat AndDog Не ок, текст сливается, нужно: Hello World Cat And Dog

Работающее решение

Использовать body_text = body.get_text(separator=' ')

вместо body_text = body.getText()


Ответы (1 шт):

Автор решения: CrazyElf

Ну так вам нужно разделить пробелами теги p, а не теги a. Попробуйте например заменить код:

body_text = body.getText()

На код:

body_text = ' '.join(tag.getText() for tag in body.find_all('p'))

Вывод:

Ancor World
Hello World   Cat And Dog
→ Ссылка