Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Date
Notes
Status Finished
node()
https://s3-us-west-2.amazonaws.com/secure.notion-static.com/4b3cb6dc
-ee2c-45b7-b2b218a1ae6366ab/slidesxpath_c6d75e8b-c8b14359-bbe3
048380ea4e86.pdf
¿Qué es Xpath?
Xpath significa XML Path Lenguage este es un lenguaje especializado que sirve
para extraer datos de manera efectiva.
Fundamentos de la Web
Entender HTTP
Hypertext Transger Protocol.
Este es un protocolo o conjunto de reglas con las cuales dos computadoras se
comunican en el internet.
Estas computadoras se identifican por CLIENTE y SERVIDOR.
Tenemos el Accept-Lenguage: ,
este es el lenguaje que aceptamos
para la información que nos
devuelve el servidor. En este caso
es fr Frances, pero podria ser es o
en.
Respuesta
Contamos con el servidor con el cual se realizo esta respuesta, en este caso
es apache, pero tambien podria ser nginx.
Tenemos una Etag, la cual tiene que ver con el caché(no se ve en el curso).
Por otro lado, si el contenido cambió, los etags son útiles para ayudar a
prevenir actualizaciones simultáneas de un recurso de sobre-escribirlo
por otro (“colisiones en el aire”).
Reto: Buscar etiqueta que sirve para colocar un sitio web dentro
de otro.
La etiqueta <iframe> permite insertar un documento html dentro de otro. La
etiqueta <iframe> puede aparecer como elemento de bloque o como elemento
en-línea.
Robots.txt
Este archivo lo encontramos en la raiz del sitio web.
User-Agent: Es la
manera en que se
identifica una
computadora
cunado hace una
petición a un sitio
web. Con esta linea
Con
Disallow: /**
https://s3-us-west-2.amazonaws.com/secure.notion-static.com/bb667149
90d642338314182087092ca0/xpath-cheatsheet.md.pdf
Expresiones Regurales
Es un lenguaje que nos permite definir
patrones para encontrar coincidencias
en un texto.
Tipos de Nodos
Cuando hablamos de nodo nos referimos a una etiqueta HTML con todo lo que
posea en su interior.
Este sitio web es un sandbox con el cual podremos realizar practicas de web
scraping sin problemas ni preocupaciones.
Esquema HTML
x.wholeText)
Predicados en XPath
Debido a que debemos filtrar de una forma mucho más especifica en nuestros
nodos y encontrar esa información que queremos extraer usaremos los
predicados.
Operadores en XPath
Como hemos visto desde el principio de nuestro primer lenguaje de programación,
existen distintos tipos de operadores aritméticos, los cuales tienen un uso
bastante importante en todos lados.
igualdad =
desigualdad !=
mayor >
menor <
Operadores Logicos
Si recuerdas tu primer lenguaje de programación, existen operadores de tipo
logico, los cuales son and , or y not .
tag-item a la vez.
Wildcards en XPath
Que pasa si no sabemos que nodo queremos traer pero aproxiamdamente
sabemos el lugar en donde se encuentra.
Para estos casos en XPath tenemos los wildcards o comodines.
Asterisco *
Es usado para traernos todo, sí, todo lo que esta en los nodos y más allá (como el
contenido), a diferencia de * que solo nos trae los nodos existentes inmediatos a
el nodo actual.
Claramente, si vemos este nodo, podemos determinar que el texto de las citas no
están dentro de un nodo <p> esta dentro de el nodo span . Sabiendo esto,
podemos determinar si usamos el * o node() .
Starts-with
La declaración comienza buscando
todos los nodos small en la cual se
ubican todo los nombres de los
autores, luego usamos predicados
para especificar que clase queremos
comience starts-with .
map(x=>x.wholeText) .
Esto nos extrae 4 resultados.
Contains
El método contains nos sirve para filtrar por los elementos que contenga nuestro
nodo.
Ends-With
Esta expresión no funciona en el XPath 1.0 de los buscadores (a día de hoy 1008
2020, pero si funciona en Python, así que no te preocupes, el syntax que
veremos será el mismo que en Python.
Matches
Matches nos sirve para hacer una busqueda en el texto de un nodo que coincida
con cierta expresión regular
🔥 En ends-with como matches nos causa un error debido a que estas son
expresiones de XPath 2.0, las cuales no soporta el navegador, pero sí
Python 🐍
AXES en XPath
¿Que pasaria si necesitaramos el nodo padre de un nodo? Usariamos a la
expresión .. para acceder a este.
🔥 El punto
azucar
. es
syntaxica
para usarlo
envez de
axes.
Hijos
Y con los axes no solo me puedo traer al nodo en sí mismo, tambien me puede
traer a los hijos.
Descendientes
Si queremos a los
nietos/descendientes usamos
Resumen de XPath
Tarea
Extraer Titulo
Primero localice el nodo en el cual se
ubica todo el apartado del nombre
div[@class="col-sm-6 product_main"] , de
método map(x⇒x.wholeText)
Extraer Precio
Para extraer el precio use la expresion
anterior y solo modifique el h1 por el
p en el cual se halla la clase
price_color y luego lo mostré en
Extraer Descripción
Para este reto use algo
distinto, use el //* el
cual buscara todo en
todos lados, para
especificar lo que
quería use los
Extraer Stock
Para esto solo use las
declaraciones de
costumbre.
La respuesta si
usáramos node() seria
casí la misma.
Reto Extra