Получить текст между тегом <span>, который находится внутри другого тега <span> - PullRequest
0 голосов
/ 07 января 2019

Мой текущий код для получения необходимого контента выглядит следующим образом:

#BeautifulSoup
textContent = []
headline = soup.find('a', attrs={"class":"title"}).text
review = soup.find('div', attrs={"class":"text show-more__control"}).text
rating = soup.find('div', attrs={"class":"rating-other-user-rating"})

textContent.append(headline)
print(headline)
textContent.append(review)
print(review)
textContent.append(rating)
print(rating)

Я получаю заголовок и текст обзора, но не рейтинг, потому что эта информация находится в другой «системе тегов», чем другая информация. В HTML-коде это выглядит так:

<span class="rating-other-user-rating">
        <svg class="ipl-icon ipl-star-icon  " xmlns="http://www.w3.org/2000/svg" fill="#000000" height="24" viewBox="0 0 24 24" width="24">
            <path d="M0 0h24v24H0z" fill="none"></path>
            <path d="M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z"></path>
            <path d="M0 0h24v24H0z" fill="none"></path>
        </svg>
            <span>6</span><span class="point-scale">/10</span>
        </span>

Информация, которую я хочу получить, это "6". Очевидно, что я не могу просто сказать "soup.find .---. Text (), потому что это необъект.

Спасибо за помощь!

1 Ответ

0 голосов
/ 07 января 2019

1) Измените 'div 'на 'span'

2)

  • а) тогда вы можете получить текст
  • б) убрать пробел, чтобы получить 6/10
  • в) Разделить на '/'
  • d) взять элемент в этом списке по индексу [0]

Заменить:

rating = soup.find('div', attrs={"class":"rating-other-user-rating"})

С:

rating = soup.find('span', attrs={"class":"rating-other-user-rating"}).text.strip().split('/')[0]

Выход:

print (rating)
6
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...