CursosEmpresasBlogLiveConfPrecios

Expresiones en XPath

Clase 9 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
    Angel Francisco Flores Ayala

    Angel Francisco Flores Ayala

    student•
    hace 5 años

    Para escribir expresiones se usara lo siguiente $x(''). Entre las comillas se van a escribir las expresiones, las expresiones tienen diferentes símbolos que tienen una utilidad.

    Se describe la utilidad de cada expresión.

    • / hace referencia a la raíz, o tambien significa un salto entre nodos. e.g /html/bodyMuestra todo lo que hay dentro del body de html
    • // Sirve para acceder a todos los nodos con la etiqueta seleccionada. e.g [*//span](//span) muestra todas las etiquetas span*
    • .. Sirve para acceder a los nodos padre de la etiqueta tag. e.g //span/.. accede a todos los nodos padre de span
    • . Hace referencia al nodo actual. e.g. //span/. es equivalent a //span
    • @ Sirve para traer los atributos. e.g //div/@class Nos da las clases de todos los divs
      César Daniel Carrasco Gutiérrez

      César Daniel Carrasco Gutiérrez

      student•
      hace 4 años

      Muchas gracias es muy útil tu aporte.

      Jeinfferson Bernal G

      Jeinfferson Bernal G

      student•
      hace 3 años

      Gracias por el resumen!

    Juan Sebastián Gómez Moreno

    Juan Sebastián Gómez Moreno

    student•
    hace 5 años

    Cuando deban hacer una búsqueda a gran escala, una herramienta que les puede ayudar es la extensión en chrome de xPath Finder. OJO, esta extensión les va a decir el xpath de lo que están buscando, pero no es un reemplazo total a lo que aprendemos acá. Por eso aclaro que úsenla cuando deban buscar muchos paths, de lo contrario háganlo manual.

    Quien quiera agregar la extensión a su navegador acá dejo el link:

    https://chrome.google.com/webstore/detail/xpath-finder/ihnknokegkbpmofmafnkoadfjkhlogph

      jaime linares

      jaime linares

      student•
      hace 4 años

      Gracias

    Juan David Colorado Alvarez

    Juan David Colorado Alvarez

    student•
    hace 5 años

    Si desean ver directamente el elemento en la página y verificar su expresión. Se puede usar en la pestaña de Elements el comando Ctrl + F y poniendo directamente la expresión, el navegador de muestra el elemento en concreto. Por ejemplo: //h1/a/text()

    scrape_platzi.png
      Wilson Delgado

      Wilson Delgado

      student•
      hace 5 años

      Gracias!

      David Amador Morales

      David Amador Morales

      student•
      hace 5 años

      Buen aporte, Juan David.

    Alejandro Giraldo Londoño

    Alejandro Giraldo Londoño

    student•
    hace 5 años

    RESUMEN: Expresiones en Xpath ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

    • / : Significa la raiz o root de todo el documento, tambien significa un salto entre nodos. Puedo navegar entre niveles

    • // : Puedo ir por varios niveles en el esquema que construimos.

    Ejemplo:

    # Fuente de trabajo Quotes to Scrape: url ="http://quotes.toscrape.com/" #Quiero extraer el texto de mi nodo h1. $x('//h1/a/text()').map(x => x.wholeText) # Devuelve en consola: ["Quotes to Scrape"] #La función map pertenece a Js y la estoy usando para que me muestre todo el texto de la selección de Xpath.

    Existen otras expresiones

    • /.. : Acceder a todos los nodos padre de x nodo.
    • /@atribute_name : Me permite extraer atributos
    #Estoy trayendo todos los atributos class de los nodos span. $x('//span/@class')

    Para ser específicos con los datos a extraer se usan predicados.

    Antonio Arana

    Antonio Arana

    student•
    hace 4 años

    COPIA Y PEGA EL XPATH:

    Fui a jugar un rato en Amazon con lo aprendido en esta clase y descubri que es posible obtener el Xpath completo, para tan solo copiar y pegar, chequen:

    2021-11-25.png
      Jeinfferson Bernal G

      Jeinfferson Bernal G

      student•
      hace 3 años

      Muy bueno!

      Diego Jurado

      Diego Jurado

      student•
      hace 3 años

      Que interesante dato!!

    William Leonardo Torres Toloza

    William Leonardo Torres Toloza

    student•
    hace 5 años

    ¿Les parece que el vídeo está mal rippeado? Yo lo veo como poco fluido la verdad

      Andrés David Lizarazo Becerra

      Andrés David Lizarazo Becerra

      student•
      hace 5 años

      A veces sí me da esa sensación, sin embargo le subo a la velocidad de reproducción y arreglado👌

      Antonio Garzón

      Antonio Garzón

      student•
      hace 5 años

      Sube la velocidad. ya que si pareciera que tiene este problema.

    Miguel Angel Paz Gonzalez

    Miguel Angel Paz Gonzalez

    student•
    hace 5 años

    Me costo trabajo pero lo logre. Extraje de wikipedia los links del menu de contenido:

    for(i=1; i<=5; i++) { console.log(i + '.- ' + $x('//*[@id="p-navigation"]/div/ul/li/a')[i].href) }

    y los imprimi en consola.

      Moisés Manuel Morín Hevia

      Moisés Manuel Morín Hevia

      student•
      hace 5 años

      Bien (:

    Abraham Manuel Munguia Coronado

    Abraham Manuel Munguia Coronado

    student•
    hace 5 años

    haciendo click derecho en copiar en la seccion elements del inspector podemos copiar el elemento en formato xpath para ese elemento

    Alan Vazquez

    Alan Vazquez

    student•
    hace 5 años

    // = {Espacion en blanco} ( Brinca directamente a la etiqueta ) / = > ( Selecciona el nodo siquiente )

    CSS no tiene una forma nativa pata acceder a los elementos padre o al valor de un atributo (Pero si puede buscar segun un atributo e inclusive un atributo con un valor especifico) sin embargo cada lenguaje implementa metodos para poder acceder a estos.

    # Navegar entre la jerarquia $$('html > body > div > div') # Ir directamente al nodo ( Retorna todos los nodos concidentes ) $$('h1') # Brinca hasta la primera concidencia sin necesidad de seguir la jerarquia de nodos directamente $$('html > body span') # Acceder a los padres en JS ( map() solo es para aplicar el metodo a cada elemento de la lista ) $$('span').map(x => x.parentElement) # Buscar los elementos que tengan el atributo class $$('span[class]') # Obtener el valor del atributo $$('span[class]').map( x => x.getAttribute('class') ) $$('span[class]').map( x => x.attributes['class'].value )

    *( CSS brinca hasta el nodo donde encuentre la concidencia ) **( Las funciones para obtener los valores de los atributos varian segun el lenguaje de programacion )

    Alan Vazquez

    Alan Vazquez

    student•
    hace 5 años

    Para usar los selectores de CSS se usa $('') o $$('') La pricipal diferencia es que usando un solo $ solo devuelve la primer concidencia y con $$ devuelve todas las concidencias https://developers.google.com/web/tools/chrome-devtools/console/utilities#queryselectorall https://developers.google.com/web/tools/chrome-devtools/console/utilities#queryselector

    Royer Guerrero Pinilla

    Royer Guerrero Pinilla

    student•
    hace 5 años

    Me parece mejor usar

    $x('//h1/a/text()').map(x => x.data)

    en lugar de

    $x('//h1/a/text()').map(x => x.wholeText)
    Edgar Roquel

    Edgar Roquel

    student•
    hace 3 años

    Es posible usar Xpath desde la consola usando JavaScript, para esto debemos valernos de las siguientes expresiones: .

    • $x('') = entre las comillas es que debo escribir mis expresiones de Xpath. .
    • /: el slash hace referencia al root/raíz del documento HTML. $x('/') esto devuelve el objeto document. El slash también se usa para salta de un nodo a otro, respetando una jerarquía, $x('/html/body/div/h1'). .
    • //: El doble Slash sirve para saltar directamente a un nodo, $x('//h1'), esto de devuelve el o los h1 disponibles en el documento HTML. .
    • text() = este método me devuelve el texto del o los nodos que estoy seleccionando $x('//h1/a/text()'), esto me devolvería un objeto text, el cual tiene tas las propiedades de un nodo tipo texto y entre estas propiedades está el nodoValue el cual contiene el texto del h1. .
    • Usando el método map() = $x('//h1/a/text()').map(x => x.wholeText), esto me devuelve el texto del o los nodos seleccionados. Ojo, este método es de JavaScript y por tanto funciona en la consola, pero no lo hará al trabajar en Python. .
    • /.. = Me permite ir directo a un nodo, pero me devuelva el padre directo de cada uno. $x('//span/..') es similar a navegar desde la consola de comandos. .
    • @ = Se usa para acceder a los atributos de uno o varios nodos, por ejemplo: $x('//span/@class'), esto me devuelve tas las clases de todos los span, pero al igual que text() me devuelve un objeto y dentro de este puedo ver el nombre de la clase en el atributo value.
    Luis Arces Palomino Blas

    Luis Arces Palomino Blas

    student•
    hace 3 años

    Saber manejar la consola me ayudo mucho a entender esta clase!

    Alan Vazquez

    Alan Vazquez

    student•
    hace 5 años

    Para los que les interesa saber que hace la funcion map() esta en palabras simples solo aplica una funcion a cada elemento de ua lista ( Esta lista son los resultados de la busqueda )

    $x('//h1/a/text()') [text] 0: text assignedSlot: null .... previousSibling: null textContent: "Quotes to Scrape" wholeText: "Quotes to Scrape" length: 1 __proto__: Array(0) $x('//h1/a/text()').map(x => x.wholeText) ["Quotes to Scrape"]

    La funcion solo accede a la propiedad wholeText del resultado, esto para cada elemento de la lista


    Usando CSS seria algo asi Resultado de la busqueda:

    $$('h1 a') [a] 0: a accessKey: "" .... text: "Quotes to Scrape" textContent: "Quotes to Scrape" length: 1 __proto__: Array(0)

    Para acceder al texto es hacer lo mismo

    $$('h1 a').map(x => x.text) ["Quotes to Scrape"]
    Luis Fernando Úbeda Camacho

    Luis Fernando Úbeda Camacho

    student•
    hace 5 años

    $x(''): Para utilizar las expresiones de XPath.

      Moisés Manuel Morín Hevia

      Moisés Manuel Morín Hevia

      student•
      hace 5 años

      / = raíz del documento, salto entre nodos. // = Saltro grande entre nodos que llega al último text() = Textro entre los nodos /.. = Todos los divs padres @ = Acceder a los atritutos

    Carolina Acosta Muñoz

    Carolina Acosta Muñoz

    student•
    hace 5 años

    Algunos ejemplos de expresiones en XPath:

    • Siempre deben ir dentro de comillas y paréntesis así: $x(' expresión ')
      Moisés Manuel Morín Hevia

      Moisés Manuel Morín Hevia

      student•
      hace 5 años

      Gracias, no se ve la imagen.

    Sara María Mejia Sánchez

    Sara María Mejia Sánchez

    student•
    hace 3 años

    En definitiva este curso tiene mucho potencial, el XPath permite interactuar de manera muy dinámica con los nodos del HTML.

    Les comparto las diferentes expresiones usadas:

    $x('/') $x('/html') $x('/header') $x('//h1') $x('//h1/a/text()') $x('//h1/a/text()').map(x => x.wholeText) $x('//span/.') $x('//span/..') $x('//span/@class')
    Joaquín Alejandro Domínguez Lozano

    Joaquín Alejandro Domínguez Lozano

    student•
    hace 4 años

    todo lo que necesitan para aprender xpath, usenlo mientras practican

    Antonio Demarco Bonino

    Antonio Demarco Bonino

    student•
    hace 4 años

    Clase maravillosa y que te hace sacarle el miedo a la consola, como tantas otras, además de poder ir a las entrañas de cada web. Ya sacaremos adelante estas prácticas.

    Cristian Roso

    Cristian Roso

    student•
    hace 5 años
    # Ir a la raíz. O agregar despues para seleccionar un nodo $x('/') # Salto entre nodos $x('//') # Ir directo al nodo $x('//h1') # Extraer directo del nodo en Python $x('//h1/text()') # Extraer directo del nodo en JS $x('//h1/a/text()').map(x => x.wholeText) # Accede al nodo padre $x('//span/..') # Acceder a todos los padres del nodo $x('//span').map(x => x.parentElement) # Extrae los span con atributo class $x('//span/@class')

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