Получение первого сильного тега в классе в BeautifulSoup - PullRequest
0 голосов
/ 01 августа 2020

Я пытаюсь go просмотреть список из 100 элементов и получить только первый сильный тег из класса в каждом элементе списка (у некоторых их 1, а у других более 1).

В код, который я пробовал, он получает все элементы с сильными тегами, поэтому вместо 100 элементов он получает 128 элементов.

Это код, который у меня есть:

for i in range(100):
    artist = soup.find_all("strong" , {"class" : "chartItem-artist-artistName"})[i].getText()
    print(artist)

Вот код HTML, добавляемый в Интернет: Скриншот HTML Код

  • Класс, на который я нацелен, выделен красным (chartItem-artist-artistInfo)
  • Элемент, который я пытаюсь вытащить, выделен синим (только первый сильный тег)

Я хочу получить только 'DaBaby 'а не' & 'или' Stunna 4 Vegas '

Ответы [ 2 ]

0 голосов
/ 01 августа 2020

Это получит текст из первого <strong> элемента под class="chartItem-artist-info":

for t in soup.select('.chartItem-artist-info'):
    artist = t.strong.get_text()
    print(artist)
0 голосов
/ 01 августа 2020

Попробуйте заменить:

for i in range(100):
    artist = soup.find_all("strong" , {"class" : "chartItem-artist-artistName"})[i].getText()
    print(artist)

на:

artists = soup.select('div.chartItem-artist-info strong:nth-child(1)')
for artist in artists:
    print(artist.get_text())
...