Это должно экспортировать необходимые данные в CSV-файл:
from bs4 import BeautifulSoup
from csv import writer
import requests
page = requests.get('https://www.lotterycorner.com/tx/lotto-texas/2019')
soup = BeautifulSoup(page.content,'html.parser')
header = {
'date': 'win-nbr-date col-sm-3 col-xs-4',
'winning numbers': 'nbr-grp',
'jackpot': 'win-nbr-jackpot col-sm-3 col-xs-3',
}
table = []
for header_key, header_value in header.items():
items = soup.find_all(class_=f"{header_value}")
column = [','.join(item.get_text().split()) if header_key=='winning numbers'
else ''.join(item.get_text().split()) if header_key == 'jackpot'
else item.get_text() for item in items]
table.append(column)
rows = list(zip(*table))
with open("winning numbers.csv", "w") as f:
csv_writer = writer(f)
csv_writer.writerow(header)
for row in rows:
csv_writer.writerow(row)
header - это словарь, отображающий, что ваши заголовки CSV будут соответствовать их значениям класса html
В цикле for мы создаем данные на столбец . Для «выигрышных номеров» и «джекпота» потребовалась особая обработка, где я заменял любые пробелы / скрытые символы запятой / пустой строкой.
Каждый столбец будет добавлен в список с именем table. Мы записываем все в файл csv, но поскольку csv пишет по одной строке за один раз, нам нужно подготовить наши строки с помощью функции zip (rows = list(zip(*table))
)