Beautyful soup не может найти значение

Рейтинг: 0Ответов: 1Опубликовано: 13.02.2023

BS спокойно парсит любые другие данные из блока, но на попытку спарсить счёт выдает None. При этом значение счёта есть в исходном коде.

Код парсера:

import requests
from bs4 import BeautifulSoup

url = 'https://www.forebet.com/ru/prognozi-na-segodnq/prognozi-mnee-bolee' #Ссылка на ресурс для парса
r = requests.get(url)
#print(r.status_code)

soup = BeautifulSoup(r.text, "lxml")

#Тестовый сбор данных с первого блока

homeTeam = soup.find('div', class_='rcnt tr_0').find('span', class_='homeTeam')
awayTeam = soup.find('div', class_='rcnt tr_0').find('span', class_='awayTeam')
chance = soup.find('div', class_='rcnt tr_0').find('span', class_='fpr')
kef = soup.find('div', class_='rcnt tr_0').find('div', class_='avg_sc tabonly')
time = soup.find('div', class_='rcnt tr_0').find('span', class_='l_min')
score = soup.find('div', class_='rcnt tr_0').find('b', class_='l_scr')


def GetRes(): #Тестовое получение результатов
    print('Домашняя команда: ', homeTeam.text)
    print('Гостевая команда: ', awayTeam.text)
    print('Более: ',int(chance.text))
    print('Колличество голов: ', kef.text)
    print('Текущая минута: ', time.text)
    print('Счет: ', score)

GetRes()

Ответы

▲ 0

Очивидно что вы не там ищите. Попробуйте:

score = soup.find('div', class_='lscr_td lResTdSmall').find('b', class_='l_scr').text

а ещё вы можете доработать, и получить вообще все очки. Вот пример: (обратите внимание на find_all() )

score = [i.find('b', class_='l_scr').text for i in soup.find_all('div', class_='lscr_td lResTdSmall')]

По аналогии, вы вообще можете собрать всё что есть на странице в один объект/list of dicts.