Eliminar o símbolo% ao usar o raspador Selenium (Python)
Abaixo está um raspador de selênio na web que percorre as diferentes guias da página deste site (https://www.fangraphs.com/leaders.aspx?pos=all&stats=bat&lg=all&qual=y&type=8&season=2018&month=0&season1=2018&ind=0), seleciona o botão "exportar dados", baixa os dados, adiciona uma coluna yearid e carrega os dados em uma tabela MySQL.
import sys
import pandas as pd
import os
import time
from datetime import datetime
from selenium import webdriver
from selenium.webdriver.firefox.firefox_profile import FirefoxProfile
from sqlalchemy import create_engine
button_text_to_url_type = {
'dashboard': 8,
'standard': 0,
'advanced': 1,
'batted_ball': 2,
'win_probability': 3,
'pitch_type': 4,
'pitch_values': 7,
'plate_discipline': 5,
'value': 6
}
download_dir = os.getcwd()
profile = FirefoxProfile("C:/Users/PATHTOFIREFOX")
profile.set_preference("browser.helperApps.neverAsk.saveToDisk", 'text/csv')
profile.set_preference("browser.download.manager.showWhenStarting", False)
profile.set_preference("browser.download.dir", download_dir)
profile.set_preference("browser.download.folderList", 2)
driver = webdriver.Firefox(firefox_profile=profile)
today = datetime.today()
for button_text, url_type in button_text_to_url_type.items():
default_filepath = os.path.join(download_dir, 'Fangraphs Leaderboard.csv')
desired_filepath = os.path.join(download_dir,
'{}_{}_{}_Leaderboard_{}.csv'.format(today.year, today.month, today.day,
button_text))
driver.get(
"https://www.fangraphs.com/leaders.aspx?pos=all&stats=bat&lg=all&qual=0&type={}&season=2018&month=0&season1=2018&ind=0&team=&rost=&age=&filter=&players=".format(
url_type))
driver.find_element_by_link_text('Export Data').click()
if os.path.isfile(default_filepath):
os.rename(default_filepath, desired_filepath)
print('Renamed file {} to {}'.format(default_filepath, desired_filepath))
else:
sys.exit('Error, unable to locate file at {}'.format(default_filepath))
df = pd.read_csv(desired_filepath)
df["yearid"] = datetime.today().year
df.to_csv(desired_filepath)
engine = create_engine("mysql+pymysql://{user}:{pw}@localhost/{db}"
.format(user="walker",
pw="password",
db="data"))
df.to_sql(con=engine, name='fg_test_hitting_{}'.format(button_text), if_exists='replace')
time.sleep(10)
driver.quit()
O raspador funciona perfeitamente, no entanto, quando eu baixa os dados, algumas colunas fazem o download dos dados com um sinal de% após um número inteiro (ou seja, 25%) que descarta minha formatação no MySQL. Ao arrastar os dados para um quadro de dados do Pandas, é possível alterar as colunas que contêm o símbolo% para que apenas mostre o número inteiro? Em caso afirmativo, como implementaria isso no loop que criei para coletar dados das várias guias do site? Também gostaria de excluir a primeira linha de dados desse processo, pois é a linha em que mantenho os nomes das minhas colunas. Desde já, obrigado!