@hades432

Как получить текст из div с помощью bs4?

На сайте есть элемент:
<div class="col-md-9">
<span id="clock"></span>
<i class="far fa-clock small mr-1"></i>
" 2 days 16 hrs ago (Aug-24-2022 07:35:26 PM +UTC) "
</div>

Мне нужно получить текст: 2 days 16 hrs ago (Aug-24-2022 07:35:26 PM +UTC)
Я делаю такой запрос:
time = html.find("span", id="clock").parent()
print(time)

Что мне выводится:
[<span id="clock"></span>, <i class="far fa-clock small mr-1"></i>]

Пробовал убрать span и i с помощью decompose, в таком случае вывод:
[<None></None>, <None></None>]
Что я делаю не так?
  • Вопрос задан
  • 199 просмотров
Решения вопроса 1
@PavelMos
element.text
и из него брать

In[2]: from bs4 import BeautifulSoup
In[3]: e='''<div class="col-md-9"> 
  ...: <span id="clock"></span> 
  ...: <i class="far fa-clock small mr-1"></i>
  ...: " 2 days 16 hrs ago (Aug-24-2022 07:35:26 PM +UTC) "
  ...: </div>'''
In[4]: e
Out[4]: '<div class="col-md-9"> \n<span id="clock"></span> \n<i class="far fa-clock small mr-1"></i>\n" 2 days 16 hrs ago (Aug-24-2022 07:35:26 PM +UTC) "\n</div>'

In[7]: BeautifulSoup(e)
Out[7]: 
<html><body><div class="col-md-9">
<span id="clock"></span>
<i class="far fa-clock small mr-1"></i>
" 2 days 16 hrs ago (Aug-24-2022 07:35:26 PM +UTC) "
</div></body></html>
In[8]: BeautifulSoup(e).text
Out[8]: '\n\n\n" 2 days 16 hrs ago (Aug-24-2022 07:35:26 PM +UTC) "\n'

а потом регекспом или strip('\n') и еще удалить двойные кавычки и пробелы слева и справа
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы