NBA y Estadisticas con PYTHON+SCRAPPING [NBA + Python + Scrapping] Finales

in #spanish7 years ago

Del como se me ocurrieron estas cosas:

Llevo bastante tiempo pensando en como integrar un script en Python a las estadísticas de deportes específicamente en ESPN, todo esto para hacer un programa 100% en python con su propia Base de Datos, a mi esto me resulta muy satisfactorio que cualquier persona con pocos o ningún conocimiento de Programación se pueda conectar a ESPN y hacer minería de Datos en algunas horas y Días, esto es lo que siempre quise al Programar.

Es interesante hacer este programa para la Sabermetria por ejemplo, o simplemente como ahora que se me ocurrió hacer un análisis Jugador a Jugador para todos los juegos de la Pos-temporada de la NBA, ademas podría agregar Bio-Ritmo Fácilmente, esto lo iré haciendo poco a poco, esta semana.

Programa en Python:

Aqui les traigo el Pequeño Script en Python, les comentare que con simplemente correr el programa tendrán en su consola los Datos del Juego que esta como URL, para mañana espero tenerles los 3 primeros de la Final, y muy posiblemente estudiare a GOLDEN STATE en la Post-Temporada, aqui el programa:

# -*- coding: utf-8 -*-

import urllib2

from bs4 import BeautifulSoup

import re

from prettytable import PrettyTable

# url that we are scraping

url = "http://www.espn.com.mx/basquetbol/nba/ficha?juegoId=400954510"

page = urllib2.urlopen(url)

soup = BeautifulSoup(page, "lxml")

name_box = soup.find('div', attrs={'class': 'row-wrapper'})  

results = []

for row in name_box:

         table_headers = row.find_all('th')

         if table_headers:

             results.append([headers.get_text() for headers in table_headers])

         table_data = row.find_all('td')

         if table_data:

     results.append([data.get_text() for data in table_data])

contador = 0

lista_visita = []

lista_casa= []

for jugadores in results:

    if contador != 0 or contador != 2:

        nro_tips = len(jugadores)

    if contador == 1:

                    lista_visita.append(jugadores)

    if  contador == 3:

                    lista_casa.append(jugadores)

    contador += 1 

lista_equipos = [lista_visita,lista_casa ]


for equipo in lista_equipos:

            equipo = equipo[0]

            cuantos_items_por_titulares = len(equipo)

            hacer_cuantas_veces = (cuantos_items_por_titulares*1.000)/ 15

            hacer_cuantas_veces = int(hacer_cuantas_veces+1)

            numero_iteracion = 1

            principio_lista = 0

            fin_lista = 15

            lista_nueva = []

            lista_total = []

            equipo_completo = []

            for lista in range(1,hacer_cuantas_veces):

                    diccionario_pedidos = {}

                    lista_nueva = equipo[principio_lista:fin_lista]

                    principio_lista +=15

                    fin_lista += 15

                    equipo_completo.append(lista_nueva)

            table = PrettyTable([u'Titulares', u'Min', u'TC A-I', u'% TC3', u'TL A-I', u'OREB', u'DREB', u'REB', u'AST', u'STL', u'BLK', u'P\xe9r', u'PF', u'+/-', u'PTS'])

            i = 0

            numero_items = len(equipo)

            for i in range(0,numero_items):

                if i < 12:

                    table.add_row([equipo_completo[i][0],

                                   equipo_completo[i][1],

                                   equipo_completo[i][2],

                                   equipo_completo[i][3], 

                                   equipo_completo[i][4],

                                   equipo_completo[i][5],

                                   equipo_completo[i][6], 

                                   equipo_completo[i][7], 

                                   equipo_completo[i][8],

                                   equipo_completo[i][9], 

                                   equipo_completo[i][10], 

                                   equipo_completo[i][11], 

                                   equipo_completo[i][12],

                                   equipo_completo[i][13],

                                   equipo_completo[i][14]

                                   ])

                    i += 0

            print table

            print " "

            print " "

            print " "

Este Programa se conecta a esta url http://www.espn.com.mx/basquetbol/nba/ficha?juegoId=400954510 Para extraer la Tabla que allí se encuentra:


Y bueno la salida de este pequeño SCRIPT es esta:

+----------------------------+-----+--------+-------+--------+------+------+-----+-----+-----+-----+-----+----+-----+-----+

|         Titulares          | Min | TC A-I | % TC3 | TL A-I | OREB | DREB | REB | AST | STL | BLK | Pér | PF | +/- | PTS |

+----------------------------+-----+--------+-------+--------+------+------+-----+-----+-----+-----+-----+----+-----+-----+

|      K. LoveK. LovePF      |  34 |  4-13  |  3-6  |  4-4   |  5   |  16  |  21 |  1  |  0  |  3  |  1  | 4  | -11 |  15 |

|     L. JamesL. JamesSF     |  40 |  9-20  |  2-6  |  8-12  |  3   |  12  |  15 |  8  |  0  |  2  |  8  | 4  | -22 |  28 |

|  T. ThompsonT. ThompsonC   |  22 |  0-3   |  0-0  |  0-0   |  3   |  1   |  4  |  2  |  0  |  0  |  1  | 2  | -13 |  0  |

|    K. IrvingK. IrvingPG    |  35 | 10-22  |  3-4  |  1-1   |  3   |  0   |  3  |  2  |  0  |  1  |  4  | 3  | -17 |  24 |

|     J. SmithJ. SmithSG     |  28 |  1-4   |  1-2  |  0-0   |  0   |  0   |  0  |  0  |  0  |  0  |  2  | 1  | -12 |  3  |

|  D. WilliamsD. WilliamsPF  |  4  |  0-2   |  0-0  |  0-0   |  0   |  0   |  0  |  0  |  0  |  0  |  0  | 0  |  -1 |  0  |

| R. JeffersonR. JeffersonSF |  15 |  3-6   |  0-2  |  3-4   |  1   |  3   |  4  |  0  |  0  |  0  |  2  | 5  |  -7 |  9  |

|  D. WilliamsD. WilliamsPG  |  19 |  0-4   |  0-2  |  0-0   |  0   |  3   |  3  |  1  |  0  |  0  |  2  | 3  |  -8 |  0  |

|  I. ShumpertI. ShumpertSG  |  17 |  2-6   |  1-3  |  0-0   |  0   |  5   |  5  |  0  |  0  |  0  |  0  | 1  |  -7 |  5  |

|     D. JonesD. JonesSG     |  4  |  1-2   |  1-2  |  4-4   |  0   |  0   |  0  |  0  |  0  |  0  |  0  | 0  |  -1 |  7  |

|     J. JonesJ. JonesSG     |  2  |  0-1   |  0-1  |  0-0   |  0   |  0   |  0  |  0  |  0  |  0  |  0  | 0  |  -3 |  0  |

|    K. KorverK. KorverSG    |  20 |  0-3   |  0-3  |  0-0   |  0   |  4   |  4  |  1  |  0  |  0  |  0  | 0  |  -8 |  0  |

+----------------------------+-----+--------+-------+--------+------+------+-----+-----+-----+-----+-----+----+-----+-----+

 

 

 

+------------------------------+-----+--------+-------+--------+------+------+-----+-----+-----+-----+-----+----+-----+-----+

|          Titulares           | Min | TC A-I | % TC3 | TL A-I | OREB | DREB | REB | AST | STL | BLK | Pér | PF | +/- | PTS |

+------------------------------+-----+--------+-------+--------+------+------+-----+-----+-----+-----+-----+----+-----+-----+

|      D. GreenD. GreenPF      |  36 |  3-12  |  1-5  |  2-3   |  1   |  10  |  11 |  2  |  2  |  1  |  2  | 4  | +12 |  9  |

|     K. DurantK. DurantSF     |  38 | 14-26  |  3-6  |  7-8   |  2   |  7   |  9  |  8  |  0  |  0  |  0  | 1  | +16 |  38 |

|   Z. PachuliaZ. PachuliaC    |  14 |  4-5   |  0-0  |  0-1   |  2   |  3   |  5  |  0  |  2  |  0  |  0  | 3  |  +5 |  8  |

|      S. CurryS. CurryPG      |  34 | 11-22  |  6-11 |  0-0   |  1   |  5   |  6  |  10 |  3  |  0  |  2  | 3  | +20 |  28 |

|   K. ThompsonK. ThompsonSG   |  36 |  3-16  |  0-5  |  0-0   |  2   |  2   |  4  |  4  |  1  |  0  |  0  | 3  |  +8 |  6  |

|       D. WestD. WestPF       |  8  |  1-4   |  0-0  |  0-0   |  1   |  0   |  1  |  1  |  0  |  0  |  0  | 3  |  +3 |  2  |

|     M. BarnesM. BarnesSF     |  2  |  1-2   |  1-1  |  0-0   |  0   |  0   |  0  |  1  |  0  |  0  |  0  | 0  |  +3 |  3  |

|     J. McAdooJ. McAdooSF     |  4  |  1-1   |  0-0  |  0-0   |  0   |  1   |  1  |  0  |  0  |  0  |  0  | 2  |  +3 |  2  |

|   A. IguodalaA. IguodalaSF   |  24 |  3-4   |  1-1  |  0-2   |  1   |  2   |  3  |  1  |  2  |  1  |  0  | 3  | +14 |  7  |

|      J. McGeeJ. McGeeC       |  6  |  2-3   |  0-0  |  0-0   |  3   |  1   |  4  |  1  |  0  |  1  |  0  | 1  |  +8 |  4  |

|      P. McCawP. McCawPG      |  3  |  0-2   |  0-1  |  0-0   |  0   |  3   |  3  |  1  |  0  |  0  |  0  | 0  |  +3 |  0  |

| S. LivingstonS. LivingstonPG |  15 |  1-5   |  0-0  |  0-0   |  1   |  1   |  2  |  2  |  1  |  0  |  0  | 1  |  +9 |  2  |

+------------------------------+-----+--------+-------+--------+------+------+-----+-----+-----+-----+-----+----+-----+-----+

 

El único Problema que puedo notar es estético, me parece muy interesante por ejemplo tomar estos datos y sacar un Promedio de cada Jugador en Todo y ver cuales son los que mas juegan y cuales ayudan mas al equipo, ademas podría agregar Biorritmo fácilmente :D y Pitagoras También :D

Bueno ya cone sto mañana Hablaremos de Bio-Ritmo y otras cosas Feliz dia, seguire haciendo crecer este programa :D

APOYARME es  RESTEEM y UPVOTE, SALUDOS




Coin Marketplace

STEEM 0.20
TRX 0.13
JST 0.030
BTC 65634.72
ETH 3493.40
USDT 1.00
SBD 2.51