Я написал код, который собирает статистику по бейсболу для многих игроков. Однако я изо всех сил пытаюсь понять, как лучше всего написать их в excel / csv. Я знаю, что добавление фреймов данных в для l oop очень неэффективно, и я пытался записать их в файл csv, поскольку я иду в l oop, но он писал только заголовки, а не базовый статистика. Я попытался воссоздать минимально воспроизводимый пример. Я также был бы признателен за совет о том, как сделать этот код более эффективным, поскольку в конечном итоге я буду очищать тысячи веб-страниц, и при нынешних темпах это займет примерно 4–5 часов. Заранее спасибо.
from selenium import webdriver
from bs4 import BeautifulSoup
import pandas as pd
import time
import requests
browser = webdriver.Chrome()
urls = ['https://www.fangraphs.com/players/aaron-judge/15640/splits?season=0&position=OF&split=0.5', 'https://www.fangraphs.com/players/aaron-judge/15640/splits?season=0&position=OF&split=0.6']
for url in urls:
browser.get(url)
standard = browser.find_element_by_css_selector("#standard").get_attribute('outerHTML')
soup = BeautifulSoup(standard, 'html.parser')
dfStandard = pd.read_html(str(soup))[0]
advanced = browser.find_element_by_css_selector("#advanced").get_attribute('outerHTML')
soup = BeautifulSoup(advanced, 'html.parser')
dfAdvanced = pd.read_html(str(soup))[0]
battedBall = browser.find_element_by_css_selector("#batted-ball").get_attribute('outerHTML')
soup = BeautifulSoup(battedBall, 'html.parser')
dfbattedBall = pd.read_html(str(soup))[0]
dfinitial = pd.merge(dfStandard, dfAdvanced, on=['Season', 'Handedness'], how='inner')
final = pd.merge(dfinitial, dfbattedBall, on=['Season', 'Handedness'], how='inner')
final.drop(['AVG_y'], axis=1, inplace=True)
print(final)