HartX
@HartX
Студент, красавчик, плохой программист=)

Как спарсить текст из класса в который вложен текст и другие классы с текстом?

Есть следующий HTML код
<div class='user-data__about'>
<strong>UI/UX and Product Designer<br><br></strong><strong>Портфолио<br></strong>alexandr</a> &gt; <a works</a><br>Экспертная область — дизайн мобильных приложений и web-интерфейсов.<br>Рисую дизайн для сайтов, мобильных и web-приложений. <br>Работаю с компаниями, студиями, стартапами.<br><br>Мне нравиться создавать поистине крутой продуктовый дизайн для своих клиентов. Погружаться в бизнес логику продукта и улучшать его качество. При этом развиваться как профессионал и оттачивать мастерство в любимом деле.<br><br><br><strong>Ссылки</strong><br><br><br><strong>Контакты</strong><br><strong><br>Услуги</strong><br><ul><li>UI/UX дизайн мобильных приложений и web-интерфейсов.</li><li>Адаптивный дизайн сложных CRM, SaaS(дашборды аналитики, таблицы)</li><li>Отрисовка иллюстраций.</li><li>Анимация интерфейсов.</li><li>Сотрудничество под NDA.</li></ul><br><strong>Инструменты</strong><br><ul><li>Figma</li><li>Sketch</li><li>After Effects</li></ul><strong><br>Примеры лучших работ<br></strong><br>Дизайн сайтов<br><br>Дизайн мобильных приложений<br>

Мне нужно спарсить текст отсюда, но есть проблема тег, который содержит нужный мне текст так же содержит теги, которые тоже содержат нужный мне текст. При взятии текста из этого класса bs4 съедает пробелы. И это главная проблема. Мой код
about_object = text.find('div', {'class': 'user-data__about'})

        about = about_object.text
        about = ' '.join(re.findall(r'[А-Я]?[^А-Я]*', about))

Он выдаёт следующий текст:
UI/UX and Product DesignerПортфолиоalexandr > Экспертная область — дизайн мобильных приложений и web-интерфейсов. Рисую дизайн для сайтов, мобильных и web-приложений. Работаю с компаниями, студиями, стартапами. Мне нравиться создавать поистине крутой продуктовый дизайн для своих клиентов. Погружаться в бизнес логику продукта и улучшать его качество. При этом развиваться как профессионал и оттачивать мастерство в любимом деле. Узнать обо мне больше →СсылкиСайт-портфолиоBehanceDribbbleLinkedinFacebookКонтактыТелеграмПочтаСкайпУслугиUI/UX дизайн мобильных приложений и web-интерфейсов.Адаптивный дизайн сложных CRM, SaaS(дашборды аналитики, таблицы)Отрисовка иллюстраций.Анимация интерфейсов.Сотрудничество под NDA.ИнструментыFigmaSketchAfter EffectsПримеры лучших работДизайн сайтовДизайн Дизайн мобильных приложенийБольше примеров работ смогу предоставить по запросу.

Как сделать так, чтобы там не слипались слова?
  • Вопрос задан
  • 150 просмотров
Пригласить эксперта
Ответы на вопрос 2
solotony
@solotony
покоряю пик Балмера
вместо
about_object.text
используй
about_object.get_text(separator=' ')
Ответ написан
Комментировать
fox_12
@fox_12 Куратор тега Python
Расставляю биты, управляю заряженными частицами
Прям свет клином на BS сошелся...:
import io
from lxml import etree

parser = etree.HTMLParser()

html = '''
<div class='user-data__about'>
<strong>UI/UX and Product Designer<br><br></strong><strong>Портфолио<br></strong>alexandr</a> &gt; <a works</a><br>Экспертная область — дизайн мобильных приложений и web-интерфейсов.<br>Рисую дизайн для сайтов, мобильных и web-приложений. <br>Работаю с компаниями, студиями, стартапами.<br><br>Мне нравиться создавать поистине крутой продуктовый дизайн для своих клиентов. Погружаться в бизнес логику продукта и улучшать его качество. При этом развиваться как профессионал и оттачивать мастерство в любимом деле.<br><br><br><strong>Ссылки</strong><br><br><br><strong>Контакты</strong><br><strong><br>Услуги</strong><br><ul><li>UI/UX дизайн мобильных приложений и web-интерфейсов.</li><li>Адаптивный дизайн сложных CRM, SaaS(дашборды аналитики, таблицы)</li><li>Отрисовка иллюстраций.</li><li>Анимация интерфейсов.</li><li>Сотрудничество под NDA.</li></ul><br><strong>Инструменты</strong><br><ul><li>Figma</li><li>Sketch</li><li>After Effects</li></ul><strong><br>Примеры лучших работ<br></strong><br>Дизайн сайтов<br><br>Дизайн мобильных приложений<br>
</div>
'''

root = etree.parse(io.StringIO(html), parser=parser)
print(' '.join(root.xpath('.//text()')))


UI/UX and Product Designer Портфолио alexandr > Экспертная область — дизайн мобильных приложений и web-интерфейсов. Рисую дизайн для сайтов, мобильных и web-приложений. Работаю с компаниями, студиями, стартапами. Мне нравиться создавать поистине крутой продуктовый дизайн для своих клиентов. Погружаться в бизнес логику продукта и улучшать его качество. При этом развиваться как профессионал и оттачивать мастерство в любимом деле. Ссылки Контакты Услуги UI/UX дизайн мобильных приложений и web-интерфейсов. Адаптивный дизайн сложных CRM, SaaS(дашборды аналитики, таблицы) Отрисовка иллюстраций. Анимация интерфейсов. Сотрудничество под NDA. Инструменты Figma Sketch After Effects Примеры лучших работ Дизайн сайтов Дизайн мобильных приложений
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы