Explorando XPath: Fundamentos del web scraping

XPath es un lenguaje que especifica la ruta para acceder a elementos o atributos específicos de un documento XML. Aprendamos la sintaxis básica de XPath y el código HTML.

10
Explorando XPath: Fundamentos del web scraping

0. ¿Qué es XPath?

XPath es la abreviatura de 'Lenguaje de Ruta XML', un lenguaje que especifica la ruta para acceder a elementos o atributos específicos de un documento XML.

XPath se utiliza principalmente en tareas de web scraping, y primero veremos la sintaxis básica de XPath.

1. Sintaxis básica de XPath

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>hashscraper</title>
</head>
<body>
    <div id="container">
        <div class="title">
            <p class="content1">let's start crawling!</p>
            <p class="content2">crawling is fun!</p>
        </div>
    </div>
</body>
</html>

2. Código HTML

Aquí hay un código HTML simple.

El código HTML está compuesto por elementos y atributos, y cada elemento y atributo forman una jerarquía.

XPath representa un documento XML en una estructura de árbol y proporciona un camino para extraer todos los nodos, atributos y datos desde el nodo raíz hasta los nodos más bajos.

(*Aquí, el nodo se refiere a cada parte del documento XML, como elementos, atributos, contenido de texto, etc.)

Veamos el camino para acceder al elemento title en el código anterior.

En términos de la estructura de árbol, el elemento title está compuesto por los elementos html → head → title en ese orden.

Por lo tanto, el XPath para el elemento title sería el siguiente.

/html/head/title

Además, en XPath, los atributos que vinculan elementos como class se representan con "@".
Para representar el XPath del primer elemento p en el código anterior usando "@", sería el siguiente.

/html/body/div/div/p[@class='content1']

3. Dos formas de representar XPath

XPath se puede representar de dos maneras, ruta absoluta y ruta relativa.

3.1. XPath: Ruta Absoluta

La ruta absoluta es similar al enfoque utilizado anteriormente, seleccionando elementos desde el nodo raíz superior.

html/body/div/div/p[@class='content1']

3.2. XPath: Ruta Relativa

La ruta relativa utiliza '//' para omitir la ruta de nodos intermedios y realizar la búsqueda secuencial desde el nodo especificado. Si representamos la ruta absoluta anterior como una ruta relativa, sería la siguiente.

//p[@class='content1']

4. Otras formas de expresión en XPath

Además, XPath utiliza varias sintaxis para representar caminos.

4.1. contains

: Obtiene los casos que contienen el valor especificado.

#'aa'를 포함하는 class명을 가진 div 요소를 선택
//div[contains(@class, "aa")]

4.2. last

: Obtiene el último nodo que coincide con la ruta.

//div[@class="aa")/span[last()]

4.3. and

: Obtiene los nodos que cumplen ambas condiciones.

#class명에 'aa'와 'bb'를 포함하는 img 요소를 선택
//img[contains(@class, "aa") and contains(@class, "bb")]

4.4. or

: Obtiene los nodos que cumplen al menos una de las dos condiciones.

#class명에 'aa' 또는 'bb'를 포함하는 img 요소를 선택
//img[contains(@class, "aa") or contains(@class, "bb")]

4.5. not

: Obtiene los nodos que no cumplen la condición especificada.

#class명에 'aa'를 포함하고 'bb'를 포함하지 않는 img 요소를 선택
//img[contains(@class, "aa") and not(contains(@class, "bb")

5. Ejemplo práctico

Hemos revisado la sintaxis básica de XPath hasta ahora. ¿Por qué no intentamos obtener el XPath de la parte que queremos de un sitio web?

5.1. Abrir Herramientas de Desarrollo

notion image

Primero, abre el sitio web deseado y haz clic izquierdo y luego en 'Inspeccionar' para abrir las herramientas de desarrollo de Chrome.

5.2. Confirmar la Etiqueta Deseada

notion image

En las herramientas de desarrollo, haz clic en el ícono del mouse en la esquina superior izquierda. Luego, al pasar el mouse sobre la parte del sitio web que deseas obtener, verás lo siguiente.

Haz clic en la ubicación señalada por el mouse y las herramientas de desarrollo mostrarán la etiqueta de la parte deseada en el código HTML real.

notion image

5.3. Copiar XPath

notion image

Copia el XPath de la parte seleccionada y pégalo. Así podrás obtener el XPath de la parte deseada.

Puedes confirmar que el XPath de la parte deseada se ha movido correctamente de la siguiente manera.

//*[@id="home"]/div/div/div[1]/h1

Entonces, ¿cómo se puede utilizar este XPath en el web scraping? Aquí hay una parte del código de web scraping.

get_browser.goto "<https://www.hashscraper.com>"
x = get_browser.element(xpath: "//*[@id='home']/div/div/div[1]/h1").text

5.4. Confirmar el Funcionamiento

Almacenamos el elemento deseado en x utilizando XPath y, al imprimir x, podemos ver que se muestra el texto deseado.

6. Conclusión: Comencemos aprendiendo XPath para realizar un web scraping adecuado

Hemos aprendido los conceptos básicos del web scraping y XPath hasta ahora. Para recopilar los datos deseados a través del web scraping, es importante comprender cómo se pueden representar los datos y esto se puede hacer de manera sencilla a través de XPath. ¡Recomendamos comenzar por estudiar XPath antes de iniciar el web scraping!

¡Lee también este artículo!

Recopilación de datos, ahora automatizada

Comienza en 5 minutos sin necesidad de programar · Experiencia en web scraping de más de 5,000 sitios web

Comienza gratis →

Comments

Add Comment

Your email won't be published and will only be used for reply notifications.

Sigue leyendo

Get notified of new posts

We'll email you when 해시스크래퍼 기술 블로그 publishes new content.

Your email will only be used for new post notifications.