CursosEmpresasBlogLiveConfPrecios

Wildcards en Xpath

Clase 12 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 min
  • 2
    ¿Por qué aprender web scraping hoy?

    ¿Por qué aprender web scraping hoy?

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

    Python: el lenguaje más poderoso para extraer datos

    03:21 min

Fundamentos de la web

  • 4
    Entender HTTP

    Entender HTTP

    07:02 min
  • 5
    ¿Qué es HTML?

    ¿Qué es HTML?

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

    Robots.txt: permisos y consideraciones al hacer web scraping

    05:41 min

XML Path Language

  • 7
    XML Path Language

    XML Path Language

    03:35 min
  • 8
    Tipos de nodos en XPath

    Tipos de nodos en XPath

    05:18 min
  • 9
    Expresiones en XPath

    Expresiones en XPath

    08:18 min
  • 10
    Predicados en Xpath

    Predicados en Xpath

    05:34 min
  • 11
    Operadores en Xpath

    Operadores en Xpath

    05:51 min
  • 12
    Wildcards en Xpath

    Wildcards en Xpath

    Viendo ahora
  • 13
    In-text search en Xpath

    In-text search en Xpath

    08:21 min
  • 14
    XPath Axes

    XPath Axes

    05:16 min
  • 15

    Resumen de XPath

    00:01 min
  • 16
    Aplicando lo aprendido

    Aplicando lo aprendido

    08:52 min

Proyecto: scraper de noticias

  • 17
    Un proyecto para tu portafolio: scraper de noticias

    Un proyecto para tu portafolio: scraper de noticias

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

    Construcción de las expresiones de XPath

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

    Obteniendo los links de los artículos con Python

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

    Guardando las noticias en archivos de texto

    14:53 min

Conclusiones

  • 21
    Cómo continuar tu ruta de aprendizaje

    Cómo continuar tu ruta de aprendizaje

    02:13 min
  • Tomar el examen del curso
    • Carolina Acosta Muñoz

      Carolina Acosta Muñoz

      student•
      hace 5 años

      Wilcards = comodines

      Ejemplos

      $x('/') <- Trae todo el documento porque representa la raíz de nuestro el html $x('/*') <- * después de / pide que traiga todos los nodos que están debajo de / (* es el primer wildcard) $x('/html/*') <- Trae todos los nodos que están inmediatamente después de html $x('//*') <- // es la expresión para saltar todos los niveles y con el * en todas las direcciones. Trae todos los nodos y todos los atributos de estos nodos. $x('//span[@class="text]/@*') <- Trae todos los span, que tengan como clase "text", con @* trae todos los atributos. Dicho de otra forma, trae todos los atributos de todos los nodos de tipo span de clase "text". $x('/html/body//div/@*') <- Todos los atributos (usando @*) de todos los div (usando //div) que están después de body $x('//span[@class="text" and @itemprop="text"]/node()') <- Trae todos los spam que sean de clase "text" que tengan un atributo @itemprop "text" y de ahí (usando node()) traer todo lo que esté dentro de los spam que cumplen las condiciones

      node() a diferencia de * trae no solamente los nodos, sino también todo el contenido

        Moisés Manuel Morín Hevia

        Moisés Manuel Morín Hevia

        student•
        hace 5 años

        Justo el resumen exacto.

        César Daniel Carrasco Gutiérrez

        César Daniel Carrasco Gutiérrez

        student•
        hace 4 años

        Excelente resumen, muchas gracias :)

      Alejandro Giraldo Londoño

      Alejandro Giraldo Londoño

      student•
      hace 5 años

      RESUMEN:Wildcards en Xpath

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

      Son comodines que usamos cuando no tenemos claro lo que queremos extraer.

      • /* : Con asterisco le estoy diciendo que me traiga todos los nodos inmediatamente después de la expresión.
      • //* : En este caso le estoy diciendo que estoy saltando en todos los niveles en todas las direcciones.
      • @*: Traer todos los atributos de todos los nodos
      • /node() : Nos trae además de nodos el contenido, difiere de asterisco.

      Ejemplo:

      x('//span[@class="text" and @itemprop="text"]/node()').map(x => x.wholeText) # Devuelve (10) ["“The world as we have created it is a process of o…cannot be changed without changing our thinking.”", "“It is our choices, Harry, that show what we truly are, far more than our abilities.”", "“There are only two ways to live your life. One is… The other is as though everything is a miracle.”", "“The person, be it gentleman or lady, who has not …ure in a good novel, must be intolerably stupid.”", "“Imperfection is beauty, madness is genius and it'…be absolutely ridiculous than absolutely boring.”", "“Try not to become a man of success. Rather become a man of value.”", "“It is better to be hated for what you are than to be loved for what you are not.”", "“I have not failed. I've just found 10,000 ways that won't work.”", "“A woman is like a tea bag; you never know how strong it is until it's in hot water.”", "“A day without sunshine is like, you know, night.”"]
      Alan Vazquez

      Alan Vazquez

      student•
      hace 6 años

      Aqui si se queda muy corto CSS Selector ya que solo tiene el wildcard del *

      # Selecciona todos los elementos hijos del html $$('html > *') # Selecciona todos los documentos $$('*')

      De los que me voy dado cuenta es que por si solo XPATH es mucho mas poderoso, pero con CSS ganas una sintanxis mucho mas corta y limpia, pero tienes que usar mas heramientas dadas por el lenguaje de programacion. Ya es cuestion de costumbres, pero aun asi le digo viendo mas ventajas a usar Selectores de CSS. O en su defecto puedes usar XPATH para estos tipos de casos particulares

        Kenny Emmanuel Lajara Aquino

        Kenny Emmanuel Lajara Aquino

        student•
        hace 5 años

        Llevo media vida usando selectores CSS y solo puedo decir: Estoy enamorado de XPath.

        Francisco Garcia [C6]

        Francisco Garcia [C6]

        student•
        hace 5 años

        gracias

      Luis Rogelio Reyes Hernandez

      Luis Rogelio Reyes Hernandez

      student•
      hace 5 años
      $x('/*') // trae todos los nodos que estan dentro del documento $x('/html/*') // trae todos los nodos que estan inmediatamente despues del html $x('//*') // trae todos los elementos que se encuentran en el documento $x('//span[@class="text"]/@*') // trae todos los atributos de todos los span que tengan la clase texto $x('/html/body//div/@*') // trae todos los atributos de todos los elementos div que estan dentro del body $x('//span[@class="text" and @itemprop="text"]/*') // en este caso no trae nada ya que adentro solo hay texto plano no hay nodos $x('//span[@class="text" and @itemprop="text"]/node()') // en todos los span que tengan como atributo class="text" and itemprop="text" trae todo el contenido esto es distinto a usar *, ya que aqui trae el contenido y texto plano de estos elementos a pesar que no estan dentro de un elemento html
        Miguel Ángel Carrillo Hernández

        Miguel Ángel Carrillo Hernández

        student•
        hace 5 años

        Esta genial la tabla que hiciste. El operador node() es muy poderoso.

        Diego Jurado

        Diego Jurado

        student•
        hace 3 años

        Que buen resumen!

      Saúl Alejandro Tapia Loya

      Saúl Alejandro Tapia Loya

      student•
      hace 5 años

      Xpath realmente es a html lo que expresiones regulares son a texto, ya quiero verlo en acción en un proyecto.

        Moisés Manuel Morín Hevia

        Moisés Manuel Morín Hevia

        student•
        hace 5 años

        También yo, muychas cosas se pueden hacer.

      Facundo Soto

      Facundo Soto

      student•
      hace 4 años

      Porque la mayoría de los códigos no me funcionan?, o sea, algo tan básico como

      $x('//span[@class="text"]/@*')

      me arroja un array vacío

        Fernando Campos

        Fernando Campos

        student•
        hace 4 años

        Hola 👋🏼 ¿Estás trabajando en el mismo sitio web que el profe usa de ejemplo? tal vez la estructura del html es diferente, pero al menos un spam debería de haber. Es raro, lo que podrías hacer es explorar la estructura poco a poco, primero buscar el body y de ahí continuar para probar que todo funciona bien.🙂

        Facundo Soto

        Facundo Soto

        student•
        hace 4 años

        Sip, me di cuenta que era otra url JAJAJA, gracias por responder

      Carlos Javier Guevara Contreras

      Carlos Javier Guevara Contreras

      student•
      hace 5 años

      Super Productiva esta clase !!!

        Moisés Manuel Morín Hevia

        Moisés Manuel Morín Hevia

        student•
        hace 5 años

        Seeee, tantas cosas que se pueden hacer.

      Santiago Martinez Pineda

      Santiago Martinez Pineda

      student•
      hace 5 años

      Por si alguien quiere revisar documentación, esta está muy buena para digerir y apoyarse.

        Moisés Manuel Morín Hevia

        Moisés Manuel Morín Hevia

        student•
        hace 5 años

        Es también muy extensa pero super útil.

      Usuario anónimo

      Usuario anónimo

      user•
      hace 5 años

      Predicates Predicates are used to find a specific node or a node that contains a specific value.

      Predicates are always embedded in square brackets.

      In the table below we have listed some path expressions with predicates and the result of the expressions:

      Path Expression Result /bookstore/book[1] Selects the first book element that is the child of the bookstore element. Note: In IE 5,6,7,8,9 first node is[0], but according to W3C, it is [1]. To solve this problem in IE, set the SelectionLanguage to XPath:

      In JavaScript: xml.setProperty("SelectionLanguage","XPath"); /bookstore/book[last()] Selects the last book element that is the child of the bookstore element /bookstore/book[last()-1] Selects the last but one book element that is the child of the bookstore element /bookstore/book[position()<3] Selects the first two book elements that are children of the bookstore element //title[@lang] Selects all the title elements that have an attribute named lang //title[@lang='en'] Selects all the title elements that have a "lang" attribute with a value of "en" /bookstore/book[price>35.00] Selects all the book elements of the bookstore element that have a price element with a value greater than 35.00 /bookstore/book[price>35.00]/title Selects all the title elements of the book elements of the bookstore element that have a price element with a value greater than 35.00

      Usuario anónimo

      Usuario anónimo

      user•
      hace 5 años

      XPath uses path expressions to select nodes or node-sets in an XML document. The node is selected by following a path or steps.

      The XML Example Document We will use the following XML document in the examples below.

      <?xml version="1.0" encoding="UTF-8"?> <bookstore> <book> <title lang="en">Harry Potter</title> <price>29.99</price> </book> <book> <title lang="en">Learning XML</title> <price>39.95</price> </book> </bookstore>
      Andrés David Lizarazo Becerra

      Andrés David Lizarazo Becerra

      student•
      hace 5 años

      /* : Con asterisco le estoy diciendo que me traiga todos los nodos inmediatamente después de la expresión. //* : En este caso le estoy diciendo que estoy saltando en todos los niveles en todas las direcciones. @*: Traer todos los atributos de todos los nodos /node() : Nos trae además de nodos el contenido, difiere de asterisco

        Moisés Manuel Morín Hevia

        Moisés Manuel Morín Hevia

        student•
        hace 5 años

        Buen resumen!

      Dario Vergara

      Dario Vergara

      student•
      hace 5 años

      ¿Por qué motivo me figura error? ![](

      Captura.PNG

        Alex Camacho

        Alex Camacho

        teacher•
        hace 5 años

        DIce tal cual el error que tienes un error de sintaxis porque falta un ) después del argumento. Checa bien el código que estas escribiendo y no dejes ninguna llave sin cerrar.

        Julio César Zaravia Paredes

        Julio César Zaravia Paredes

        student•
        hace 5 años

        Hola Ruben, de tu pregunta ya han pasado algunos meses y seguramente ya la has solucionado. Igual lo comento por si alguien se cruza con lo mismo.

        El motivo del error es simple, si bien el texto del error indica que falta un ')', esto no es del todo cierto ya que si vemos la expresión, esta cuenta con todos su parentesis de apertura y cierre.

        El problema es debido a que estás utilizando comillas dobles tanto para agrupar la expresión como para marcar el texto 'text' dentro de tu selección de clase.

        En resumen, no debes (y no puedes) usar comillas dobles dentro de comillas dobles (lo mismo para las comillas simples).

        Tu expresión está escrita así: x("//span[@class="text"]/@*") Debería estar escrita así: x("//span[@class='text']/@*")

        Saludos!

      Itzel Villeda Mejía

      Itzel Villeda Mejía

      student•
      hace 4 años

      Les comparto un cheatsheet que encontre de Xpath: https://devhints.io/xpath

      Juan Carlos Ortiz Romero

      Juan Carlos Ortiz Romero

      student•
      hace 4 años

      🤖🤖🤖Wildcards🤖🤖🤖 Son comodines que usamos cuando no tenemos claro lo que queremos extraer. /* : Con asterisco le estoy diciendo que me traiga todos los nodos inmediatamente después de la expresión. //* : En este caso le estoy diciendo que estoy saltando en todos los niveles en todas las direcciones. @*: Traer todos los atributos de todos los nodos /node() : Nos trae además de nodos el contenido, difiere de asterisco.

      Vikas Sharma

      Vikas Sharma

      student•
      hace 4 años

      Como recomendación para futuros videos, procuren que el video tenga margen inferior suficiente para evitar que los controles del reproductor tapen la explicación.

      Flavio Abat Carrola Reta

      Flavio Abat Carrola Reta

      student•
      hace 4 años

      Me gusta mucho como enseña Facundo, excelente, pero creo que para optimizar estaría bien limpiar la consola después de uno o dos comandos para tener mayor visibilidad como espectador.

      Saludos!

      Antonio Demarco Bonino

      Antonio Demarco Bonino

      student•
      hace 4 años

      Encantado de poder aprender más y más de esta herramienta.

      Usuario anónimo

      Usuario anónimo

      user•
      hace 5 años

      Selecting Nodes XPath uses path expressions to select nodes in an XML document. The node is selected by following a path or steps. The most useful path expressions are listed below:

      Expression Description nodename Selects all nodes with the name "nodename" / Selects from the root node // Selects nodes in the document from the current node that match the selection no matter where they are . Selects the current node .. Selects the parent of the current node @ Selects attributes

      Herman Castillo R

      Herman Castillo R

      student•
      hace 5 años

      En caso que se quiera ser más especifico con la búsqueda se pueden usar predicados $x('//span[@class="text" and @itemprop="text"]/node()')[0]

      Usuario anónimo

      Usuario anónimo

      user•
      hace 5 años

      Selecting Unknown Nodes XPath wildcards can be used to select unknown XML nodes.

      Wildcard Description

      • Matches any element node @* Matches any attribute node node() Matches any node of any kind

    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