CursosEmpresasBlogLiveConfPrecios

Obteniendo los links de los artículos con Python

Clase 19 de 21 • Curso de Fundamentos de Web Scraping con Python y Xpath

Clase anteriorSiguiente clase

Contenido del curso

Introducción al web scraping
  • 1
    ¿Qué es el web scraping?

    ¿Qué es el web scraping?

    02:06
  • 2
    ¿Por qué aprender web scraping hoy?

    ¿Por qué aprender web scraping hoy?

    03:05
  • 3
    Python: el lenguaje más poderoso para extraer datos

    Python: el lenguaje más poderoso para extraer datos

    03:21
Fundamentos de la web
  • 4
    Entender HTTP

    Entender HTTP

    07:02
  • 5
    ¿Qué es HTML?

    ¿Qué es HTML?

    08:08
  • 6
    Robots.txt: permisos y consideraciones al hacer web scraping

    Robots.txt: permisos y consideraciones al hacer web scraping

    05:41
XML Path Language
  • 7
    XML Path Language

    XML Path Language

    03:35
  • 8
    Tipos de nodos en XPath

    Tipos de nodos en XPath

    05:18
  • 9
    Expresiones en XPath

    Expresiones en XPath

    08:18
  • 10
    Predicados en Xpath

    Predicados en Xpath

    05:34
  • 11
    Operadores en Xpath

    Operadores en Xpath

    05:51
  • 12
    Wildcards en Xpath

    Wildcards en Xpath

    06:11
  • 13
    In-text search en Xpath

    In-text search en Xpath

    08:21
  • 14
    XPath Axes

    XPath Axes

    05:16
  • 15

    Resumen de XPath

    00:01
  • 16
    Aplicando lo aprendido

    Aplicando lo aprendido

    08:52
Proyecto: scraper de noticias
  • 17
    Un proyecto para tu portafolio: scraper de noticias

    Un proyecto para tu portafolio: scraper de noticias

    10:08
  • 18
    Construcción de las expresiones de XPath

    Construcción de las expresiones de XPath

    10:29
  • 19
    Obteniendo los links de los artículos con Python

    Obteniendo los links de los artículos con Python

    10:56
  • 20
    Guardando las noticias en archivos de texto

    Guardando las noticias en archivos de texto

    14:53
Conclusiones
  • 21
    Cómo continuar tu ruta de aprendizaje

    Cómo continuar tu ruta de aprendizaje

    02:13
    Esteban parra

    Esteban parra

    student•
    hace 5 años

    hey profe Facundo, sos lo maximo!, despues de maradona estas vos che! muy muy buena esta clase

      Lucas Armijo Guzmán

      Lucas Armijo Guzmán

      student•
      hace 4 años

      profe facundo lo mas grande papaa sajkads

      Cesar Hernández Ramírez

      Cesar Hernández Ramírez

      student•
      hace 4 años

      sdasdadasxasñjklh

    Rubén Cuello

    Rubén Cuello

    student•
    hace 5 años

    Para los que no les esté funcionando el path, recuerden cambiar los "h2" por "text-fill". Ej de mi path:

    XPATH_LINK_TO_ARTICLE = '//div[@class="news V_Title_Img" or @class="V_Title"]/text-fill/a/@href'``` No se muy bien porque con h2 no funciona.
      Julian David Sanchez Rey

      Julian David Sanchez Rey

      student•
      hace 5 años

      crack

      Aurelio ML

      Aurelio ML

      student•
      hace 5 años

      Grande

    R PMdo

    R PMdo

    student•
    hace 4 años

    Marzo 2022 Para los que tengan problema para recibir los links, revisando veo que dice que Python no interpreta adecuadamente los h2, ocasionando que tu código Xpath en la consola sí te da resultados pero en el programa no, la solución es reemplazar los h2 por text-fil:

    Este era mi código:

    //h2[@class=""]/a/@href```

    Y este es el código que sí me funcionó:

    //text-fill[not(@class)]/a/@href
      Daniel Bernal Ariza

      Daniel Bernal Ariza

      student•
      hace 4 años

      Grandee, gracias!! :D

      Alberto Fleitas

      Alberto Fleitas

      student•
      hace 4 años

      Excelente! No tendrás un link a la documentación de por qué sucede esto?

    María José Medina

    María José Medina

    student•
    hace 5 años

    Tengo un problemita con el scrapper y es que en la consola de Chrome el Xpath para los links me devuelve 84 urls (de los cuales 77 pertenecen a larepublica.co), y en el código solo me trae 15... Adjunto el código y el screenshot de la consola de Chrome por si me pueden ayudar.

    Codigo:

    import requests import lxml.html as html # para aplicar Xpath a HTML HOME_URL = 'https://www.larepublica.co/' XPATH_LINK_TO_ARTICLE = '//h2/a/@href' XPATH_TITLE = '//div[@class="row OpeningPostNormal"]//h2/a/text()' XPATH_SUMMARY = '//div[@class="lead"]/p/text()' XPATH_BODY = '//div[@class="html-content"]/p[not(@class)]/text()' def parse_home(): try: response = requests.get(HOME_URL) if response.status_code == 200: home = response.content.decode('utf-8') parsed = html.fromstring(home) links_to_notices = parsed.xpath(XPATH_LINK_TO_ARTICLE) print(len(links_to_notices)) print(links_to_notices) else: raise ValueError(f"Error: {response.status_code}") except ValueError as ve: print(ve) def main(): parse_home() if __name__ == '__main__': main()

    Screenshot:

    ![](

    help.png

      Luis Angel Martinez Elizalde

      Luis Angel Martinez Elizalde

      student•
      hace 5 años

      Yo usé el siguiente xpath:

      //div[contains(@class, "V")]//h2[not(@class)]/a[contains(@class, "Sect")]/@href

      Tengo un problema parecido: obtengo 6 elementos. Creo que es por el uso de contains()

      Luis Angel Martinez Elizalde

      Luis Angel Martinez Elizalde

      student•
      hace 5 años

      Creo que encontre el xpath correcto:

      //div[contains(@class, "V")]/a[contains(@class, "kicker")]/@href
    Alejandro Giraldo Londoño

    Alejandro Giraldo Londoño

    student•
    hace 5 años

    RESUMEN:Desarrollo proyecto

    ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

    1. Obtener todos los links con python.
    import requests import lxml.html as html # Creamos constantes HOME_URL = 'https://www.larepublica.co/' XPATH_LINK_TO_ARTICLE = '//div/h2[not(@class)]/a/@href' XPATH_LINK_TO_TITLE = '//div[@class="mb-auto"]/h2/a/text()' XPATH_LINK_TO_SUMMARY = '//div[@class="wrap-post col-9"]/div/div[@class="lead"]/p/text()' XPATH_LINK_TO_BODY = '//div[@class="html-content"]/p[not(@class)]/text()' # Creamos las funcioens para ejecutar el script. def parse_home(): # Creamos un bloque try para manejar los errores. Y manejar los Status Code. try: response = requests.get(HOME_URL) # Aqui va la lógica para traer los links. if response.status_code == 200: # .content trae el HTML que necesita ser traducido con un decode para que python lo entienda # en terminos de caracteres, me devuelve un string que noes más que el HTML crudo. home = response.content.decode('utf-8') # Tambien podemos usar el método text para parsear la respuesta a texto. # home = response.text # print(home) # En esta línea uso el parser para transformar el contentido # html a un archivo que sea de utilidad para las expresiones xpath parsed = html.fromstring(home) print(parsed) # En esta línea estoy usando el archivo parseado con la función xpath y le paso por parámetro mi constante # la cual almacena la expresión Xpath. links_to_notices = parsed.xpath(XPATH_LINK_TO_ARTICLE) # For debugg # print(len(links_to_notices)) # print(type(links_to_notices)) # print(links_to_notices) else: #Elevamos el error para ser capturado en el try-except, too lo que sea un error. raise ValueError(f'Error: {response.status_code}') except ValueError as ve: print(ve) def run(): parse_home() if __name__ == '__main__': run()

    Errores Asociados y comentarios:


    1 ■ Primera recomendación es que uses el print statement para debuggear tus código línea por línea. Es una práctica que resulta muy útil.

    2 ■ ¿Tienes una lista vacía?, ¿No te trae los links al ejecutar scraper.py, pero tu expresion Xpath retorna en la consola de Chrome lo que buscas?.

    • R: Cambia tu expresión Xpath. Es posible que varias cosas estén ocurriendo y una de las más probables es la expresión Xpath, recuerda que tienes muchas formas de llegar al mismo nodo.
    Santiago Martinez Pineda

    Santiago Martinez Pineda

    student•
    hace 5 años

    Que alguien le diga a Fredy que Facundo dicte todos los cursos donde tenga que ver Python. No es crear rivalidades pero el mejor de todos en enseñar en Python. Grande Facundo.

      Diego Jurado

      Diego Jurado

      student•
      hace 3 años

      Si, los cursos de Facundo para python son muy buenos!

    Arnau Izquierdo

    Arnau Izquierdo

    student•
    hace 5 años

    Si cuando importan los módulos les marca error, solo tienen que tener seleccionado el interprete correcto en Visual Studio Code.

    Para cambiar el interprete accederemos con SHIFT + CONTROL + P y apuntaremos Select interpreter y seleccionaremos el entorno virtual correcto.

    Antes deberán tener instalado los módulos como el profesor ha explicado. A mi me ha funcionado de esta manera, espero que les sea de ayuda. ^^

      Axel Yaguana

      Axel Yaguana

      Team Platzi•
      hace 5 años

      Graaacias. He estado como 3 horas solo en esta clase tratando de solucionarlo. Este comentario me ayudó mucho. Mil gracias, Arnau.

      Tomás Lautaro Elizondo

      Tomás Lautaro Elizondo

      student•
      hace 3 años

      Gracias !

    Juan Eduardo Quintero Palacio

    Juan Eduardo Quintero Palacio

    student•
    hace 5 años

    No me aparecen las URL's de las noticias al ejecutar el código. El código que utilicé es el siguiente:

    import requests import lxml.html as html HOME_URL = 'https://www.larepublica.co/' XPATH_LINK_TO_ARTICLE = '//div[@class="V_Title" or @class="news V_Title_Img"]/h2/a/@href' XPATH_TITTLE = '//h2[@style="font-size: 45px; line-height: 49px;" or @style="font-size: 44px; line-height: ' \ '48px;"]/a/text() ' XPATH_SUMMARY = '//div[@class="lead"]/p/text()' XPATH_BODY = '//div[@class="html-content"]/p[not(@class)]/text()' XPATH_AUTHOR = '//div[@class="autorArticle"]/p/text()' def parse_home(): try: response = requests.get(HOME_URL) if response.status_code == 200: home = response.content.decode('utf-8') parsed = html.fromstring(home) links_to_news = parsed.xpath(XPATH_LINK_TO_ARTICLE) print(links_to_news) else: raise ValueError(f'Error : {response.status_code}') except ValueError as ve: print(ve) def run(): parse_home() if __name__ == '__main__': run()

    Le he hecho print a response y es código 200, a home y sale el html completo, así como también le he hecho print a parsed así:

    print(html.tostring(parsed))

    Y me sale el html pero compacto, mi pensamiento es que al hacer "parsed.xpath(xpath)" falla algo, ya que en el navegador si me aparecen bastantes URL's con el xpath pero al ejecutar el código no aparece ninguna. ­ He buscado en bastantes lugares intentando comprender pero nop :c

      Juan Eduardo Quintero Palacio

      Juan Eduardo Quintero Palacio

      student•
      hace 5 años

      Update: Revisando un poco de documentación, foros y aportes de Platzi vi que la etiqueta "h2" no la procesa bien, entonces hay que sustituir "h2" por "text-fill" en el xpath y funciona correctamente. Un ejemplo es cambiar:

      '//div[@class="V_Title" or @class="news V_Title_Img"]/h2/a/@href'

      por

      '//div[@class="V_Title" or @class="news V_Title_Img"]/text-fill/a/@href'

      ­ Curiosidad: Demoré hora y media intentando arreglarlo, me di una ducha para relajarme y a los 10 minutos encontré como arreglarlo, el consejo de irse a dormir, ducharse o directamente relajarse y volver a hacer code sirve bastante lol.

      Carlos Daniel Dávila Maldonado

      Carlos Daniel Dávila Maldonado

      student•
      hace 5 años

      Esto pasa cuando efectivamente el enlace existe pero no trae lo que estás buscando Te dejo mis xpath

      XPATH_LINK_TO_ARTICLE = '//text-fill[not(@class)]/a/@href' XPATH_LINK_TO_TITLE = '//div[@class="mb-auto"]/h2/a/text()' XPATH_LINK_TO_SUMMARY = '//div[@class="wrap-post col-9"]/div/div[@class="lead"]/p/text()' XPATH_LINK_TO_BODY = '//div[@class="html-content"]/p[not(@class)]/text()'```
    Dickson Garcia

    Dickson Garcia

    student•
    hace 5 años
    import requests import lxml.html as html HOME_URL = 'https://www.larepublica.co/' XPATH_LINKS_TO_ARTICLE = '//text-fill[not(@class)]/a/@href' XPATH_TITLE = '//div[@class="mb-auto"]/h2/a/text()' XPATH_SUMMARY = '//div[@class="lead"]/p/text()' XPATH_BOBY = '//div[@class="html-content"]/p/text()' def parse_home(): try: response = requests.get(HOME_URL) if response.status_code == 200: home = response.content.decode('utf-8') parsed = html.fromstring(home) link_to_notices = parsed.xpath(XPATH_LINKS_TO_ARTICLE) print(link_to_notices) else: raise ValueError(f'Error: {response.status_code}') except ValueError as ve: print(ve) def run(): parse_home() if __name__ == "__main__": run()```
      Jaime Escobedo Vargas

      Jaime Escobedo Vargas

      student•
      hace 5 años

      Hola, me podrías explicar como es que funciona el text-fill en lugar del h2?. Estuve buscando en internet y no he encontrado nada 🤔. Y estuve tratando varias rutas en Xpath pero tu código es el único que me trajo los resultados que me aparecen en la consola de Chrome.

      Dickson Garcia

      Dickson Garcia

      student•
      hace 5 años

      Lo que sucede es que python no interpreta la etiqueta h2 y se cambia para que el xpath pueda ser interpretado. En este blog esta explicado. https://platzi.com/tutoriales/1908-web-scraping/7042-news-web-scraping-codigo-python/

    Cristian Nicolás Pereira

    Cristian Nicolás Pereira

    student•
    hace 5 años

    Nosé si será por gitbash, pero a la hora de importar los módulos me sale un error que no me los reconoce. Instalé los módulos en venv como nos enseñaron pero nosé a que se debe el error.

      bryan Quispe Valeriano

      bryan Quispe Valeriano

      student•
      hace 5 años

      con una captura de pantalla del error seria mas facil ayudarte

      Juan Ignacio Echenique Olsina

      Juan Ignacio Echenique Olsina

      student•
      hace 5 años

      Me pasaba exactamente lo mismo, ya pude resolverlo con el comando > py -m pip install requests Lo mismo tuve que hacer para lxml > py -m pip install lxml

    Sebastián José Herrera Monterrosa

    Sebastián José Herrera Monterrosa

    student•
    hace 5 años

    Prueben con este XPATH para los links

    XPATH_LINKS = '//a[contains(@class, "kicker")]/@href'
      JUAN ANDRES VILLADA

      JUAN ANDRES VILLADA

      student•
      hace 4 años

      Muchas Gracias, con esa me funciono de pelo!

      Lourdes Nuñez Burgos

      Lourdes Nuñez Burgos

      student•
      hace 3 años

      Muchas gracias este me funcionó en 2023.

    Alvin Sulca Vega

    Alvin Sulca Vega

    student•
    hace 5 años

    ¿Por qué el xpath que uso en la consola de google chrome funciona, pero al momento de usarlo en mi script me retorna una lista vacía?

      Jose Carlos Manjarres Pereira

      Jose Carlos Manjarres Pereira

      student•
      hace 5 años

      Hola Alvin, ya pudiste solucionar el inconveniente?. Me pasa igual.

      Saludos,

      Camilo Barreiro

      Camilo Barreiro

      student•
      hace 5 años

      Hola alvin, no se como tengas el xpath de tu link de articulos, pero a mi me paso que en google me aparecia pero en python me retornaba una lista vacia y probe agregando textfill y me funciono en python

      //div[@class="news V_Title_Img"]/text-fill[not(@class)]/a/@href
    Angel Vega

    Angel Vega

    student•
    hace 4 años

    Me retorna un array vacío

    76.png
      Angel Vega

      Angel Vega

      student•
      hace 4 años

      Busqué varías soluciones y al parecer pueden ser mi links, pero son validos al filtarlo con xpath, alguna ayuda se agradece!!

      Angel Vega

      Angel Vega

      student•
      hace 4 años

      Update: (Rebuen update)

      Para alguien que no le sirva he igualmente, la consola le retorne vacía, quitar los h2 dejandolos con solo // soluciona el problema.

      ++Antes++ XPATH_LINK_TO_ARTICLE = '//text-fill[@data-h="19"]/a/@href' XPATH_TITLE = '//div[@class="row OpeningPostNormal"]//text-fill[@data-h="45"]/span/text()' XPATH_SUMMARY = '//div[@class="row article-wrapper"]//div[@class="lead"]/p/text()' XPATH_BODY = '//div[@class="html-content"]/p[not(@class)]/text()'

      ++Después++ XPATH_LINK_TO_ARTICLE = '//a/@href' XPATH_TITLE = '//div[@class="row OpeningPostNormal"]//span/text()' XPATH_SUMMARY = '//div[@class="row article-wrapper"]//div[@class="lead"]/p/text()' XPATH_BODY = '//div[@class="html-content"]/p[not(@class)]/text()'

    Victor Baruch Pazaran Jaimes

    Victor Baruch Pazaran Jaimes

    student•
    hace 3 años

    Un poco tarde, pero les explico un poco por que en nuestro scrapper recibimos menos links de los que hay en la pagina

    Lo que pasa es que la pagina carga primero un contenido ligero (que es lo que recibe nuetstro scrapper) y despues de unos segundos carga todo lo demás gracias al codigo javascript que se ejecuta en el navegador, es por esto que aunque nosotros podamos ver los h2 en la pagina, nuestro scrapper no puede por que no está ejecutando el javascript que los genera

      Victor Baruch Pazaran Jaimes

      Victor Baruch Pazaran Jaimes

      student•
      hace 3 años

      Y es por eso que desde nuestro script tenemos que usar el "text-fill" en lugar de los h2, ya que los h2 son generados hasta despues

    Carlos A. Sánchez

    Carlos A. Sánchez

    student•
    hace 4 años

    El profe Facundo es EL MEJOR!!!!, sus cursos son los mejores explicados y entendibles!

    María José Medina

    María José Medina

    student•
    hace 5 años

    De todos los cursos de Platzi que he hecho por fin alguien que dice la importancia de escribir los códigos en inglés! Finally!! Esto es una buena práctica que veo que en muchos cursos tristemente no se sigue.

    Juan Fernando Moyano Ramírez

    Juan Fernando Moyano Ramírez

    student•
    hace 5 años

    Hola a todos, yo tenia el problema de que no se adjuntaban los links a la lista links_to_notices, y la razon era un par de problemas con las expresiones de xpath, os adjunto la pregunta en el foro de esta clase que me ayudo a resolver mi problema.

    https://platzi.com/comentario/2166481/

    Hector Fabian Rodriguez Acosta

    Hector Fabian Rodriguez Acosta

    student•
    hace 5 años

    el diario de la republica realizo cambios y para obtener la expresion necesitada para los links ahora es:

    //a[@class="economiaSect" or @class="kicker globoeconomiaSect"]/@href
    Mario Alberto Vásquez Arias

    Mario Alberto Vásquez Arias

    student•
    hace 5 años

    Por que en la consola de google la expresión XPATH funciona pero al pasarlo a VS trae una lista vacía? Me toco cambiar la expresión pero no entiendo por que pasa eso

      Camilo Gonzalez

      Camilo Gonzalez

      student•
      hace 5 años

      Hola Mario a mi me pasa lo mismo, se me ocurre que se ha modificado la página de noticias y ahora está hecha con VUE, por eso no devuelve nada. Creo que es por eso

      Moisés Manuel Morín Hevia

      Moisés Manuel Morín Hevia

      student•
      hace 5 años

      Maybe al pasarlo a python omitiste algo.

    Fernando Pullutasig

    Fernando Pullutasig

    student•
    hace 5 años

    ¿A alguien más le pasó qué le devuelve una lista vacía?

    Este es el código que estoy utilizando:

    XPATH_LINK_TO_ARTICLE='//h2[@style and not(@class)]/a/@href' def parse_home(): try: response=requests.get(HOME_URL) if response.status_code==200: home=response.content.decode('utf-8') parsed=html.fromstring(home) links_to_notices=parsed.xpath(XPATH_LINK_TO_ARTICLE) print(links_to_notices) else: raise ValueError(f'Error: {response.status_code}') except ValueError as ve: print(ve) def run(): parse_home()
      Rodrigo Rodriguez

      Rodrigo Rodriguez

      student•
      hace 5 años

      Si, me esta pasando en este momento a pesar que tengo el xpath correcto para los links, probados en el navegador, pero no trae en python

      Fernando Pullutasig

      Fernando Pullutasig

      student•
      hace 5 años

      El problema fue por la expresion XPATH, en mi caso funciono teniendolas así:

      HOME_URL='https://www.larepublica.co/' XPATH_LINK_TO_ARTICLE='//h2[not(@class)]/a/@href' XPATH_TITLE='//div[@class="mb-auto"]/text-fill/a[@class]/text()' XPATH_SUMMARY='//div[@class="lead"]/p/text()' XPATH_BODY='//div[@class="html-content"]/p[not(@class)]/text()'

Escuelas

  • Desarrollo Web
    • Fundamentos del Desarrollo Web Profesional
    • Diseño y Desarrollo Frontend
    • Desarrollo Frontend con JavaScript
    • Desarrollo Frontend con Vue.js
    • Desarrollo Frontend con Angular
    • Desarrollo Frontend con React.js
    • Desarrollo Backend con Node.js
    • Desarrollo Backend con Python
    • Desarrollo Backend con Java
    • Desarrollo Backend con PHP
    • Desarrollo Backend con Ruby
    • Bases de Datos para Web
    • Seguridad Web & API
    • Testing Automatizado y QA para Web
    • Arquitecturas Web Modernas y Escalabilidad
    • DevOps y Cloud para Desarrolladores Web
  • English Academy
    • Inglés Básico A1
    • Inglés Básico A2
    • Inglés Intermedio B1
    • Inglés Intermedio Alto B2
    • Inglés Avanzado C1
    • Inglés para Propósitos Específicos
    • Inglés de Negocios
  • Marketing Digital
    • Fundamentos de Marketing Digital
    • Marketing de Contenidos y Redacción Persuasiva
    • SEO y Posicionamiento Web
    • Social Media Marketing y Community Management
    • Publicidad Digital y Paid Media
    • Analítica Digital y Optimización (CRO)
    • Estrategia de Marketing y Growth
    • Marketing de Marca y Comunicación Estratégica
    • Marketing para E-commerce
    • Marketing B2B
    • Inteligencia Artificial Aplicada al Marketing
    • Automatización del Marketing
    • Marca Personal y Marketing Freelance
    • Ventas y Experiencia del Cliente
    • Creación de Contenido para Redes Sociales
  • Inteligencia Artificial y Data Science
    • Fundamentos de Data Science y AI
    • Análisis y Visualización de Datos
    • Machine Learning y Deep Learning
    • Data Engineer
    • Inteligencia Artificial para la Productividad
    • Desarrollo de Aplicaciones con IA
    • AI Software Engineer
  • Ciberseguridad
    • Fundamentos de Ciberseguridad
    • Hacking Ético y Pentesting (Red Team)
    • Análisis de Malware e Ingeniería Forense
    • Seguridad Defensiva y Cumplimiento (Blue Team)
    • Ciberseguridad Estratégica
  • Liderazgo y Habilidades Blandas
    • Fundamentos de Habilidades Profesionales
    • Liderazgo y Gestión de Equipos
    • Comunicación Avanzada y Oratoria
    • Negociación y Resolución de Conflictos
    • Inteligencia Emocional y Autogestión
    • Productividad y Herramientas Digitales
    • Gestión de Proyectos y Metodologías Ágiles
    • Desarrollo de Carrera y Marca Personal
    • Diversidad, Inclusión y Entorno Laboral Saludable
    • Filosofía y Estrategia para Líderes
  • Diseño de Producto y UX
    • Fundamentos de Diseño UX/UI
    • Investigación de Usuarios (UX Research)
    • Arquitectura de Información y Usabilidad
    • Diseño de Interfaces y Prototipado (UI Design)
    • Sistemas de Diseño y DesignOps
    • Redacción UX (UX Writing)
    • Creatividad e Innovación en Diseño
    • Diseño Accesible e Inclusivo
    • Diseño Asistido por Inteligencia Artificial
    • Gestión de Producto y Liderazgo en Diseño
    • Diseño de Interacciones Emergentes (VUI/VR)
    • Desarrollo Web para Diseñadores
    • Diseño y Prototipado No-Code
  • Contenido Audiovisual
    • Fundamentos de Producción Audiovisual
    • Producción de Video para Plataformas Digitales
    • Producción de Audio y Podcast
    • Fotografía y Diseño Gráfico para Contenido Digital
    • Motion Graphics y Animación
    • Contenido Interactivo y Realidad Aumentada
    • Estrategia, Marketing y Monetización de Contenidos
  • Desarrollo Móvil
    • Fundamentos de Desarrollo Móvil
    • Desarrollo Nativo Android con Kotlin
    • Desarrollo Nativo iOS con Swift
    • Desarrollo Multiplataforma con React Native
    • Desarrollo Multiplataforma con Flutter
    • Arquitectura y Patrones de Diseño Móvil
    • Integración de APIs y Persistencia Móvil
    • Testing y Despliegue en Móvil
    • Diseño UX/UI para Móviles
  • Diseño Gráfico y Arte Digital
    • Fundamentos del Diseño Gráfico y Digital
    • Diseño de Identidad Visual y Branding
    • Ilustración Digital y Arte Conceptual
    • Diseño Editorial y de Empaques
    • Motion Graphics y Animación 3D
    • Diseño Gráfico Asistido por Inteligencia Artificial
    • Creatividad e Innovación en Diseño
  • Programación
    • Fundamentos de Programación e Ingeniería de Software
    • Herramientas de IA para el trabajo
    • Matemáticas para Programación
    • Programación con Python
    • Programación con JavaScript
    • Programación con TypeScript
    • Programación Orientada a Objetos con Java
    • Desarrollo con C# y .NET
    • Programación con PHP
    • Programación con Go y Rust
    • Programación Móvil con Swift y Kotlin
    • Programación con C y C++
    • Administración Básica de Servidores Linux
  • Negocios
    • Fundamentos de Negocios y Emprendimiento
    • Estrategia y Crecimiento Empresarial
    • Finanzas Personales y Corporativas
    • Inversión en Mercados Financieros
    • Ventas, CRM y Experiencia del Cliente
    • Operaciones, Logística y E-commerce
    • Gestión de Proyectos y Metodologías Ágiles
    • Aspectos Legales y Cumplimiento
    • Habilidades Directivas y Crecimiento Profesional
    • Diversidad e Inclusión en el Entorno Laboral
    • Herramientas Digitales y Automatización para Negocios
  • Blockchain y Web3
    • Fundamentos de Blockchain y Web3
    • Desarrollo de Smart Contracts y dApps
    • Finanzas Descentralizadas (DeFi)
    • NFTs y Economía de Creadores
    • Seguridad Blockchain
    • Ecosistemas Blockchain Alternativos (No-EVM)
    • Producto, Marketing y Legal en Web3
  • Recursos Humanos
    • Fundamentos y Cultura Organizacional en RRHH
    • Atracción y Selección de Talento
    • Cultura y Employee Experience
    • Gestión y Desarrollo de Talento
    • Desarrollo y Evaluación de Liderazgo
    • Diversidad, Equidad e Inclusión
    • AI y Automatización en Recursos Humanos
    • Tecnología y Automatización en RRHH
  • Finanzas e Inversiones
    • Fundamentos de Finanzas Personales y Corporativas
    • Análisis y Valoración Financiera
    • Inversión y Mercados de Capitales
    • Finanzas Descentralizadas (DeFi) y Criptoactivos
    • Finanzas y Estrategia para Startups
    • Inteligencia Artificial Aplicada a Finanzas
    • Domina Excel
    • Financial Analyst
    • Conseguir trabajo en Finanzas e Inversiones
  • Startups
    • Fundamentos y Validación de Ideas
    • Estrategia de Negocio y Product-Market Fit
    • Desarrollo de Producto y Operaciones Lean
    • Finanzas, Legal y Fundraising
    • Marketing, Ventas y Growth para Startups
    • Cultura, Talento y Liderazgo
    • Finanzas y Operaciones en Ecommerce
    • Startups Web3 y Blockchain
    • Startups con Impacto Social
    • Expansión y Ecosistema Startup
  • Cloud Computing y DevOps
    • Fundamentos de Cloud y DevOps
    • Administración de Servidores Linux
    • Contenerización y Orquestación
    • Infraestructura como Código (IaC) y CI/CD
    • Amazon Web Services
    • Microsoft Azure
    • Serverless y Observabilidad
    • Certificaciones Cloud (Preparación)
    • Plataforma Cloud GCP

Platzi y comunidad

  • Platzi Business
  • Live Classes
  • Lanzamientos
  • Executive Program
  • Trabaja con nosotros
  • Podcast

Recursos

  • Manual de Marca

Soporte

  • Preguntas Frecuentes
  • Contáctanos

Legal

  • Términos y Condiciones
  • Privacidad
  • Tyc promociones
Reconocimientos
Reconocimientos
Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
Logo reconocimientoPrimera Startup EdTech · 2018
Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
Logo reconocimientoCEO Mejor Emprendedor del año · 2024
De LATAM conpara el mundo
YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads