Извлечение Embedded <span>, затем снова <span>данных в Python с использованием BeautifulSoup - PullRequest
0 голосов
/ 16 марта 2020

Я пытаюсь получить '5 дней go из этого Фактические данные выглядят так

<div class="C(#959595) Fz(11px) D(ib) Mb(6px)" data-reactid="11">
<span>Zacks</span>
<i aria-hidden="true" class="Mx(4px)">•</i>
<span>5 days ago</span>
</div>

при запуске этого

soup.find('div', {"class": "C(#959595) Fz(11px) D(ib) Mb(6px)"})

Я получаю это

<div class="C(#959595) Fz(11px) D(ib) Mb(6px)" data-reactid="11">Zacks</div>

Пожалуйста, скажите мне, как получить текст span ie .. "5 дней a go"

Ответы [ 3 ]

0 голосов
/ 16 марта 2020

Вы можете непосредственно найти селектор css для вашего 5 days ago диапазона. Просто щелкните правой кнопкой мыши на нем, нажмите на элемент проверки. Когда инструмент проверки открывается, щелкните правой кнопкой мыши и go, чтобы скопировать меню и скопировать селектор css.

0 голосов
/ 16 марта 2020

Другое решение.

from simplified_scrapy import SimplifiedDoc
html = '''
<div class="C(#959595) Fz(11px) D(ib) Mb(6px)" data-reactid="11">
<span>Zacks</span>
<i aria-hidden="true" class="Mx(4px)">•</i>
<span>5 days ago</span>
</div>
'''
doc  = SimplifiedDoc(html)
# Use <i> to locate
text = doc.getElement('div',value='C(#959595) Fz(11px) D(ib) Mb(6px)').getElement('i',value='Mx(4px)').getNext('span').text
print (text)
# Take the last one
text = doc.getElement('div',value='C(#959595) Fz(11px) D(ib) Mb(6px)').spans[-1].text
print (text)

Результат:

5 days ago
5 days ago
0 голосов
/ 16 марта 2020

Попробуйте:

div = soup.find('div', {"class": "C(#959595) Fz(11px) D(ib) Mb(6px)"})
span = div.find_all_next("span")[1]
print(span.text)

Вывод:

5 days ago.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...