find_all
действительно функция, которую вы ищете.
Попробуйте:
import requests
from bs4 import BeautifulSoup
url = 'https://www.lequipe.fr/Football/ligue-1/page-calendrier-resultats/21e-journee'
page = requests.get(url)
soup = BeautifulSoup(page.content, 'html.parser')
all_result = soup.find('div', class_="grid")
all_pairs = all_result.find_all('div', class_='grid__item')
i = 0
for result in all_pairs:
i = i + 1
team_names = result.find_all('span', class_='TeamScore__nameshort')
first_team_name = team_names[0]
second_team_name = team_names[1]
calendrier = result.find('div', class_='TeamScore__data')
print(i)
print('{} vs {}'.format(first_team_name.text.strip(), second_team_name.text.strip()))
print(calendrier.text.strip())
print()
, которая должна выдать:
1
Nice vs Rennes
24 janv.
20h45
2
Marseille vs Angers
25 janv.
17h30
3
Montpellier vs Dijon
25 janv.
20h00
4
Monaco vs Strasbourg
25 janv.
20h00
5
Reims vs Metz
25 janv.
20h00
6
Brest vs Amiens
25 janv.
20h00
7
Saint-Étienne vs Nîmes
25 janv.
20h00
8
Lyon vs Toulouse
26 janv.
15h00
9
Nantes vs Bordeaux
26 janv.
17h00
10
Lille vs Paris-SG
26 janv.
21h00
find_all
просто возвращает список элементов, поэтому вам нужно будет использовать индекс для доступа к нужному элементу (или, альтернативно, выполнить итерацию по списку).
Что касается разных дат, я не рассматривал их, кроме одного причина может заключаться в том, что при посещении сайта в браузере даты меняются на JS, чтобы соответствовать местному часовому поясу. Получив сайт с BeautifulSoup, вы получите даты часового пояса по умолчанию.