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
  • 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
    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 5 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