Skip to content

Instantly share code, notes, and snippets.

@wyanez
Last active October 26, 2023 00:04
Show Gist options
  • Select an option

  • Save wyanez/4534406 to your computer and use it in GitHub Desktop.

Select an option

Save wyanez/4534406 to your computer and use it in GitHub Desktop.
Script que lee y almacena las estadísticas de béisbol (pitcheo y bateo) de la página de la LVBP

README

Script que lee y almacena las estadísticas de béisbol (pitcheo y bateo) de la página de la LVBP Autor: William Yanez - @wryanez Actualizado a Enero 2013 Publicado y distribuido libremente bajo licencia GPL

Dependencias

  • Instalar Ruby
  • Instalar la gema Nokogiri. Desde la linea de comandos ejecuta:
gem install nokogiri
# Script que lee y almacena las estadísticas de béisbol (pitcheo y bateo) de la página de la LVBP
# William Yanez - @wryanez
# Actualizado a Enero 2013
# Publicado y distribuido libremente bajo licencia GPL
require 'nokogiri'
require 'net/http'
require 'date'
# Columnas de cada estadistica bateo y pitcheo
COLS_PITCH = %w(JUGADOR EQUIPO JJ JI JG JP PCT JS JC JB IP H H2 H3 HR CP CL BB SO GP WP BK EFE)
COLS_BAT = %w(JUGADOR EQUIPO AVE JJ VB CA H BA H2 H3 HR CI BB SO SH SF GP BR OR SLG OBP)
URL_BASE = 'www.lvbp.com'
#Temporada Regular
URL_PITCH_TR= '/estadisticas_gen.asp?t=lanz&tipo=w&co_temporada=1&co_ano_temporada=6'
URL_BAT_TR='/estadisticas_gen.asp?t=bat&tipo=c&co_temporada=1&co_ano_temporada=6'
#Round robin
URL_PITCH_RR='/estadisticas_gen.asp?t=lanz&co_temporada=2&co_ano_temporada=6&ds_temporada=Temporada%202012%20-%202013'
URL_BAT_RR='/estadisticas_gen.asp?t=bat&co_temporada=2&co_ano_temporada=6&ds_temporada=Temporada%202012%20-%202013'
SEPARATOR=';' #Separador para el archivo CSV
def connect_and_extract_lvbp(url,expr_xpath,num_cols)
arr_data=[]
begin
Net::HTTP.start(URL_BASE) do |query|
puts "Conectandome a http://#{URL_BASE}#{url}"
resp = query.get(url)
puts "Resultado: #{resp.code}"
if resp.code=='200'
html = resp.body
doc = Nokogiri::HTML.parse(html)
celdas=doc.xpath(expr_xpath)
i=0
info=[]
celdas.children.each do |td|
info<< td.text
i+=1
if i==num_cols
arr_data << info
info=[]
i=0
end
end
else
puts "Error de conexion www"
end
end
rescue Exception => ex
puts ex
end
return arr_data
end
def print_data_csv(arr_data,arr_cols,filename)
File.open(filename,'w') do |out|
out.puts arr_cols.join(SEPARATOR)
arr_data.each do |jug|
item=jug.join(SEPARATOR)
out.puts item
end
end
puts "Creado exitosamente #{filename}"
end
def print_batting_stats(filename)
arr_data= connect_and_extract_lvbp(URL_BAT_RR,"//table/tr/td[@class='tdTablaPos1']",COLS_BAT.size)
if arr_data.size>0
arr_data.each do |jug|
jug.each {|valor| valor.gsub!('.','')}
end
print_data_csv(arr_data,COLS_BAT,filename)
end
end
def print_pitching_stats(filename)
arr_data=connect_and_extract_lvbp(URL_PITCH_RR,"//table/tr/td[@class='tdTablaPos1']",COLS_PITCH.size)
if arr_data.size>0
arr_data.each do |jug|
jug.each {|valor| valor.gsub!('.',',')}
end
print_data_csv(arr_data,COLS_PITCH,filename)
end
end
#------------- MAIN --------------
hoy=Date.today.strftime("%Y%m%d")
print_batting_stats "rr_lvbp_bateo_#{hoy}.csv"
print_pitching_stats "rr_lvbp_pitcheo_#{hoy}.csv"
@JoseAlirioCardoza
Copy link
Copy Markdown

Buenas, estoy interesado en saber si el script todavia funciona, y queria consutarle si tendra algun script o base de datos donde pueda conseguir la informacion de temporadas anteriores, soy un estudiante de maestria de Investigacion de Operaciones, aficionados de la lvbp y queria elaborar un dashboard en lenguaje R con datos de la lvbp, usando shiny para eso.

Saludos.

@willyanez
Copy link
Copy Markdown

Hola buenas noches José,
Gracias por tu interés, honestamente tengo varias temporadas que no lo uso, probablemente la pagina donde tomaba los datos cambió, pero voy a probarlo y te comento. Respecto a lo que me preguntas de base de datos o fuente de información de las temporadas anteriores te recomiendo la excelente web https://pelotabinaria.com.ve/beisbol/.
Me parece interesante el reto que te planteas y te deseo el mejor de los éxitos.

@JoseAlirioCardoza
Copy link
Copy Markdown

JoseAlirioCardoza commented Nov 1, 2022 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment