GitHub no solamente almacena codigo en sus Repos

PYTHON · APIs · PRINCIPIANTES

Conecta Python con el mundo real usando APIs

Aprende a hablar con servicios externos desde tu c贸digo: qu茅 es una API, c贸mo funciona el protocolo HTTP y c贸mo extraer datos reales de GitHub con solo unas pocas l铆neas.

Nivel: principiante Lectura: ~8 min Librer铆a: requests
▶ Video del tema

Conceptos clave

Antes de escribir una sola l铆nea de c贸digo, conviene tener claros estos cuatro t茅rminos. Los ver谩s mencionados en cada proyecto que consuma datos externos.

馃攲
API

Application Programming Interface. Un contrato que define c贸mo dos programas pueden comunicarse entre s铆. Es el "men煤" de lo que un servicio te deja pedir.

馃摗
HTTP

El protocolo que usan los navegadores y tu c贸digo para enviar y recibir informaci贸n por internet. Toda API web habla HTTP.

馃摝
JSON

JavaScript Object Notation. El formato de texto m谩s com煤n para intercambiar datos entre una API y tu programa. Python lo convierte en un diccionario autom谩ticamente.

馃攽
Endpoint

La URL espec铆fica a la que le haces la petici贸n. Cada endpoint representa un recurso distinto, por ejemplo /repos/torvalds/linux.

C贸digos de estado HTTP

Cada vez que haces una petici贸n, el servidor te responde con un n煤mero de tres d铆gitos que resume qu茅 pas贸. Son el sem谩foro de las APIs.

C贸digo Nombre Qu茅 significa
200 OK Todo sali贸 bien. La respuesta incluye los datos que pediste.
201 Created Se cre贸 un recurso nuevo con 茅xito.
400 Bad Request Tu petici贸n tiene errores de formato o faltan par谩metros.
401 Unauthorized No enviaste credenciales o son inv谩lidas.
404 Not Found El recurso que pediste no existe en esa URL.
500 Server Error El fallo es del lado del servidor, no de tu c贸digo.

Tu primera petici贸n a la API de GitHub

La librer铆a requests hace todo el trabajo pesado. Instalaci贸n r谩pida desde tu terminal:

terminal
pip install requests

Con la librer铆a instalada, esta es la petici贸n m谩s b谩sica:

ejemplo_01.py
import requests

# 1. Haces la petici贸n al endpoint
r = requests.get( "https://api.github.com/repos/torvalds/linux" )

# 2. C贸digo de estado
print( f"Estado: {r.status_code}" )

# 3. Contenido JSON → diccionario Python
print( r.json() )

¿Qu茅 ocurre bajo el cap贸?

Cuando llamas a requests.get(), Python abre una conexi贸n con los servidores de GitHub, env铆a una petici贸n HTTP GET y espera la respuesta.

El objeto r contiene el c贸digo de estado, las cabeceras y el cuerpo con los datos.

Propiedades del objeto Response

El objeto que devuelve requests.get() tiene varios atributos y m茅todos 煤tiles:

Propiedad / M茅todo Tipo Para qu茅 sirve
r.status_code int C贸digo num茅rico de la respuesta.
r.json() dict / list Convierte el cuerpo JSON a un objeto Python.
r.text str Cuerpo de la respuesta como texto.
r.headers dict Cabeceras HTTP que mand贸 el servidor.
r.url str URL final de la petici贸n.
r.ok bool True si el c贸digo es menor a 400.

Ejemplo completo: reporte del repositorio de Linux

Este script extrae los campos m谩s interesantes y los muestra de forma organizada en tu terminal.

reporte_github.py
import requests

url = "https://api.github.com/repos/torvalds/linux"

try:

    r = requests.get( url, timeout=10 )
    r.raise_for_status()

    datos = r.json()

    print( "-" * 50 )
    print( f"REPOSITORIO: {datos['full_name'].upper()}" )
    print( "-" * 50 )

    # Popularidad
    print( f"⭐ Estrellas: {datos['stargazers_count']:,}" )
    print( f"馃憗️ Observadores: {datos['subscribers_count']:,}" )
    print( f"馃嵈 Forks: {datos['forks_count']:,}" )
    print( f"馃悰 Issues abiertos: {datos['open_issues_count']:,}" )

    # Detalles
    descripcion = datos.get( "description" ) or "No disponible"

    licencia = (
        datos[ "license" ][ "name" ]
        if datos.get( "license" )
        else "No especificada"
    )

    sitio_web = datos.get( "homepage" ) or "No disponible"

    print( f"馃摑 Descripci贸n: {descripcion}" )
    print( f"⚖️ Licencia: {licencia}" )
    print( f"馃寪 Sitio web: {sitio_web}" )

    # Fechas
    print( f"馃搮 Creado: {datos['created_at']}" )
    print( f"馃攧 脷ltima push: {datos['pushed_at']}" )

    print( "-" * 50 )

except requests.exceptions.HTTPError as e:
    print( f"❌ Error HTTP: {e}" )

except requests.exceptions.ConnectionError:
    print( "❌ No hay conexi贸n a Internet." )

except requests.exceptions.Timeout:
    print( "❌ La petici贸n tard贸 demasiado." )

except requests.exceptions.RequestException as e:
    print( f"❌ Error al realizar la petici贸n: {e}" )

Resultado en tu terminal

OUTPUT
──────────────────────────────────────────────────
REPOSITORIO: TORVALDS/LINUX
──────────────────────────────────────────────────
⭐ Estrellas: 177,412
馃憗️ Observadores: 8,240
馃嵈 Forks: 52,890
馃悰 Issues abiertos: 371
馃摑 Descripci贸n: Linux kernel source tree
⚖️ Licencia: GNU General Public License v2.0
馃寪 Sitio web: https://kernel.org
馃搮 Creado: 2011-09-04T22:48:12Z
馃攧 脷ltima push: 2026-06-18T14:22:07Z
──────────────────────────────────────────────────
馃挕 Truco: Los n煤meros de estrellas y forks cambian en tiempo real. Cada vez que ejecutes el script ver谩s valores diferentes. ¡Tu c贸digo est谩 leyendo datos vivos de internet!

Explora qu茅 m谩s puedes pedir

La API de GitHub devuelve docenas de campos por repositorio. Para ver todas las claves disponibles puedes utilizar:

explorar_claves.py
# Ver TODAS las claves que devuelve la API
print( "\n馃搵 Claves disponibles:" )
for clave in sorted( datos.keys() ):
    print( f" → {clave}" )

Algunos de los campos m谩s 煤tiles que encontrar谩s:

language
Lenguaje de programaci贸n principal del repositorio.
visibility
Si el repositorio es public o private.
default_branch
Nombre de la rama principal.
size
Tama帽o del repositorio en kilobytes.
topics
Lista de etiquetas tem谩ticas del repositorio.
owner.login
Nombre de usuario del propietario.

Resumen

Con tres l铆neas de Python puedes comenzar a hablar con pr谩cticamente cualquier API:

01 · IMPORTA

import requests — la librer铆a que gestiona las conexiones HTTP por ti.

02 · PIDE

requests.get(url) — env铆a la petici贸n y espera la respuesta.

03 · USA

r.json() — convierte la respuesta en un diccionario Python.

jesus@el-informatico: ~/python/apis$ python reporte_github.py

✔ API conectada correctamente
✔ Datos recibidos desde GitHub
✔ JSON convertido a objeto Python

REGRESAR AL INICIO

¿Quieres continuar explorando m谩s contenido de El Informatico?

馃枼️ INICIO →

Comentarios

Entradas m谩s populares de este blog

Hack de redes guardadas en Windows.

Curso de C++ / Cap 02

Curso de C++ / Cap 01