El críquet es uno de los famosos deportes al aire libre que se juega en todo el mundo. Hay muy pocas API que proporcionen marcadores en vivo y ninguna de ellas es de uso gratuito. Usando cualquiera de los marcadores disponibles podemos crear API para nosotros mismos. Este método no solo funciona para Cricket Scoreboard sino también para cualquier información disponible en línea. El siguiente es el flujo en el que este blog guiaría para crear una API e implementarla.
- Configuración del directorio de aplicaciones
- Datos de Web Scrape de NDTV Sports.
- Se usaría Beautiful Soup en Python.
- Crear una API.
- Se utilizaría matraz.
- Heroku se usaría para el despliegue,
Configuración del directorio de aplicaciones
Paso 1: Cree una carpeta (p. ej., CricGFG).
Paso 2: configurar el entorno virtual. Aquí creamos un entorno .env
python -m venv .env
Paso 3: Activa el entorno.
.env\Scripts\activate
Obtener los datos
Paso 1: en Python, tenemos Beautiful Soup, que es una biblioteca para extraer datos de archivos HTML. Para instalar Beautiful Soup, ejecute un comando simple;
pip install beautifulsoup4
Del mismo modo, instale el módulo de Requests de Python.
pip install requests
Usaríamos el NDTV Sports Cricket Scorecard para obtener los datos.
Paso 3: Los siguientes son los pasos para extraer datos de la página web. Para obtener el texto HTML de la página web;
html_text = requests.get(‘https://sports.ndtv.com/cricket/live-scores’).texto
Para representar el objeto analizado como un todo, usamos el objeto BeautifulSoup,
soup = BeautifulSoup(html_text, "html.parser")
Nota: Se recomienda ejecutar y verificar el código después de cada paso para conocer la diferencia y comprender a fondo los conceptos.
Ejemplo:
Python
from bs4 import BeautifulSoup import requests html_text = requests.get('https://sports.ndtv.com/cricket/live-scores').text soup = BeautifulSoup(html_text, "html.parser") print(soup)
Encontraremos además todos los divs requeridos y otras etiquetas con sus respectivas clases.
Python
from bs4 import BeautifulSoup import requests html_text = requests.get('https://sports.ndtv.com/cricket/live-scores').text soup = BeautifulSoup(html_text, "html.parser") sect = soup.find_all('div', class_='sp-scr_wrp') section = sect[0] description = section.find('span', class_='description').text location = section.find('span', class_='location').text current = section.find('div', class_='scr_dt-red').text link = "https://sports.ndtv.com/" + \ section.find('a', class_='scr_ful-sbr-txt').get('href')
La siguiente sección del código tiene nuestros datos que son nuestro resultado. Si por alguna de las razones ese código no está presente en el archivo HTML, se produciría un error, por lo que se incluye esa parte en un bloque de prueba y excepción.
Código completo:
Python3
from bs4 import BeautifulSoup import requests html_text = requests.get('https://sports.ndtv.com/cricket/live-scores').text soup = BeautifulSoup(html_text, "html.parser") sect = soup.find_all('div', class_='sp-scr_wrp ind-hig_crd vevent') section = sect[0] description = section.find('span', class_='description').text location = section.find('span', class_='location').text current = section.find('div', class_='scr_dt-red').text link = "https://sports.ndtv.com/" + section.find( 'a', class_='scr_ful-sbr-txt').get('href') try: status = section.find_all('div', class_="scr_dt-red")[1].text block = section.find_all('div', class_='scr_tm-wrp') team1_block = block[0] team1_name = team1_block.find('div', class_='scr_tm-nm').text team1_score = team1_block.find('span', class_='scr_tm-run').text team2_block = block[1] team2_name = team2_block.find('div', class_='scr_tm-nm').text team2_score = team2_block.find('span', class_='scr_tm-run').text print(description) print(location) print(status) print(current) print(team1_name.strip()) print(team1_score.strip()) print(team2_name.strip()) print(team2_score.strip()) print(link) except: print("Data not available")
Producción:
Marcador en vivo Inglaterra vs India 3ra Prueba, Trofeo Pataudi, 2021
Headingley, Leeds
Inglaterra lidera por 223 carreras
Día 2 | Sesión posterior al té
Inglaterra
301/3 (96,0)
India
78
https://sports.ndtv.com//cricket/live-scorecard/inglaterra-vs-india-3rd-test-leeds-enin08252021199051
Creando la API
Usaremos Flask , que es un marco micro web escrito en Python.
pip install Flask
El siguiente es el código de inicio para nuestra aplicación de matraz.
Python3
# We import the Flask Class, an instance of # this class will be our WSGI application. from flask import Flask # We create an instance of this class. The first # argument is the name of the application’s module # or package. __name__ is a convenient shortcut for # this that is appropriate for most cases.This is # needed so that Flask knows where to look for resources # such as templates and static files. app = Flask(__name__) # We use the route() decorator to tell Flask what URL # should trigger our function. @app.route('/') def cricgfg(): return "Welcome to CricGFG!" # main driver function if __name__ == "__main__": # run() method of Flask class runs the # application on the local development server. app.run(debug=True)
Producción:
Abra localhost en su navegador:
Ahora agregaríamos nuestro código de Web Scraping en este y algunos métodos auxiliares proporcionados por Flask para devolver correctamente los datos JSON.
Entendiendo Jsonify
jsonify es una función en Flask. Serializa datos en formato de notación de objetos de JavaScript (JSON). Considere el siguiente código:
Python3
from flask import Flask, jsonify app = Flask(__name__) @app.route('/') def cricgfg(): # Creating a dictionary with data to test jsonfiy. result = { "Description": "Live score England vs India 3rd Test,Pataudi \ Trophy, 2021", "Location": "Headingley, Leeds", "Status": "England lead by 223 runs", "Current": "Day 2 | Post Tea Session", "Team A": "England", "Team A Score": "301/3 (96.0)", "Team B": "India", "Team B Score": "78", "Full Scoreboard": "https://sports.ndtv.com//cricket/live-scorecard\ /england-vs-india-3rd-test-leeds-enin08252021199051", "Credits": "NDTV Sports" } return jsonify(result) if __name__ == "__main__": app.run(debug=True)
Producción:
Ahora es el momento de fusionar todos nuestros códigos. ¡Empecemos!
Python3
import requests from bs4 import BeautifulSoup from flask import Flask, jsonify app = Flask(__name__) @app.route('/') def cricgfg(): html_text = requests.get('https://sports.ndtv.com/cricket/live-scores').text soup = BeautifulSoup(html_text, "html.parser") sect = soup.find_all('div', class_='sp-scr_wrp ind-hig_crd vevent') section = sect[0] description = section.find('span', class_='description').text location = section.find('span', class_='location').text current = section.find('div', class_='scr_dt-red').text link = "https://sports.ndtv.com/" + section.find( 'a', class_='scr_ful-sbr-txt').get('href') try: status = section.find_all('div', class_="scr_dt-red")[1].text block = section.find_all('div', class_='scr_tm-wrp') team1_block = block[0] team1_name = team1_block.find('div', class_='scr_tm-nm').text team1_score = team1_block.find('span', class_='scr_tm-run').text team2_block = block[1] team2_name = team2_block.find('div', class_='scr_tm-nm').text team2_score = team2_block.find('span', class_='scr_tm-run').text result = { "Description": description, "Location": location, "Status": status, "Current": current, "Team A": team1_name, "Team A Score": team1_score, "Team B": team2_name, "Team B Score": team2_score, "Full Scoreboard": link, "Credits": "NDTV Sports" } except: pass return jsonify(result) if __name__ == "__main__": app.run(debug=True)
Salida en el navegador:
Aquí hemos creado nuestra propia API de Cricket.
Implementación de API en Heroku
Paso 1: debe crear una cuenta en Heroku .
Paso 2: Instale Git en su máquina.
Paso 3: Instale Heroku en su máquina.
Paso 4: Inicie sesión en su cuenta de Heroku
heroku login
Paso 5: Instale gunicorn, que es un servidor HTTP de Python puro para aplicaciones WSGI. Le permite ejecutar cualquier aplicación de Python al mismo tiempo mediante la ejecución de varios procesos de Python.
pip install gunicorn
Paso 6: Necesitamos crear un perfil que es un archivo de texto en el directorio raíz de nuestra aplicación, para declarar explícitamente qué comando debe ejecutarse para iniciar nuestra aplicación.
web: gunicorn CricGFG:app
Paso 7: Además, creamos un archivo requirements.txt que incluye todos los módulos necesarios que necesita Heroku para ejecutar nuestra aplicación de matraz.
pip freeze >> requirements.txt
Paso 8: Cree una aplicación en Heroku, haga clic aquí .
Paso 9: ahora inicializamos un repositorio git y le agregamos nuestros archivos.
git init git add . git commit -m "Cricket API Completed"
Paso 10: Ahora dirigiremos a Heroku hacia nuestro repositorio git.
heroku git:remote -a cricgfg
Paso 11: ahora enviaremos nuestros archivos a Heroku.
git push heroku master
Finalmente, nuestra API ahora está disponible en https://cricgfg.herokuapp.com/
Publicación traducida automáticamente
Artículo escrito por kothawleprem y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA