Вы можете достичь этого, переместив «писатель» за пределы для l oop:
import bs4 as bs
import urllib.request
from requests import get
import pandas as pd
from csv import writer
url = 'https://www.vegasinsider.com/college-basketball/scoreboard/scores.cfm/game_date/01-12-2020'
source = urllib.request.urlopen(url)
soup = bs.BeautifulSoup(source, 'lxml')
tables = soup.find_all('table', attrs={'class': 'sportPicksBorder'})
filename = 'C:\\Users\\MyName\\Documents\\tables.csv'
with open(filename, 'w')as f:
data = []
csv_writer = writer(f)
for table in tables:
rows = table.find_all('tr')
for row in rows:
columns = row.find_all('td')
csv_writer.writerow([column.text.strip() for column in columns])
Это записывает все в одном файле CSV, но данные немного запутанны и по-прежнему требуют очистки. Я не могу понять, как ваш исходный код очистил бы его больше, хотя, когда я загружаю эту веб-страницу, там нет th-тегов, все это tr / td. Кроме того, я сделал это на Ma c, поэтому я не уверен, правильно ли отформатирован этот путь к файлу для tables.csv.