Ejemplos de instrucciones de análisis
Consulta ejemplos prácticos de instrucciones de análisis para Custom Parser: maneja objetos anidados, listas, errores y matrices de matrices.
El siguiente fragmento de HTML se analiza usando instrucciones de análisis de ejemplo en las secciones siguientes.
HTML de ejemplo
<body>
<div id="products">
<div class="product" id="shoes">
<div class="title">Zapatos</div>
<div class="price">223.12</div>
<div class="description">
<ul>
<li class="description-item">Súper</li>
</ul>
</div>
</div>
<div class="product" id="pants">
<div class="title">Pantalones</div>
<div class="price">60.12</div>
<div class="description">
<ul>
<li class="description-item">Increíble</li>
<li class="description-item">Calidad</li>
</ul>
</div>
</div>
<div class="product" id="socks">
<div class="title">Calcetines</div>
<div class="price">123.12</div>
<div class="description">
<ul>
<li class="description-item">Muy</li>
<li class="description-item">Bonito</li>
<li class="description-item">Calcetines</li>
</ul>
</div>
</div>
</div>
</body>Mínimo indispensable
Ejemplo 1. Selección de elementos de la descripción de zapatos usando XPath.
La función xpath encontrará un solo elemento y lo pondrá en una lista como cadena:
El comportamiento exacto xpath de la función se describe aquí.
Instrucciones de análisis anidadas
Estás apuntando a esta parte del HTML de ejemplo:
Y te gustaría que el resultado analizado tuviera la siguiente estructura:
Las instrucciones de análisis serían así.
Ejemplo 2. Las instrucciones de análisis se usan para analizar zapatos información.
xpath_one funciona de forma similar a xpath, pero en lugar de devolver una lista de todas las coincidencias, devuelve el primer elemento coincidente.
En el ejemplo anterior, la zapatos propiedad es la única propiedad definida en el ámbito de instrucciones más externo. La zapatos propiedad contiene instrucciones de análisis anidadas.
La función zapatos el ámbito de instrucciones no tiene una canalización definida (_fns propiedad falta). Esto significa que las canalizaciones definidas en title, price, y descripción los ámbitos usarán el documento en análisis como entrada de la canalización.
En el Ejemplo 2, puedes ver una repetición de //div[@id='shoes'] en expresiones XPath. La repetición se puede evitar definiendo una canalización en zapatos ámbito:
Ejemplo 3. Definir una canalización en zapatos instrucciones de ámbito para evitar la repetición de la expresión XPath.
Al usar las instrucciones de análisis proporcionadas en el Ejemplo 3, Custom Parser hará lo siguiente:
Empezar procesando
shoes._fnsla canalización, que generará elzapatoselemento HTML;Tomar
shoes._fnsla salida de la canalización y usarla como entrada para las canalizaciones definidas entitle,price, ydescripciónlos ámbitos;Procesar
title,price, ydescripciónlas canalizaciones para producir los valores finales.
El resultado se verá igual que el resultado del Ejemplo 2:
La diferencia principal entre el Ejemplo 2 y el Ejemplo 3 es que en el Ejemplo 3, la canalización se define en el zapatos ámbito. Esta canalización adicional selecciona el elemento de los zapatos y lo pasa a canalizaciones posteriores que se encuentran más abajo en la jerarquía de instrucciones.
Lista de objetos anidados
La función HTML de ejemplo se usa de nuevo como el documento en análisis.
Si quieres que tu resultado analizado se vea así:
Las instrucciones de análisis serían así:
Ejemplo 4. Análisis de todos los productos encontrados en el documento HTML.
La estructura de las instrucciones de análisis se parece a la del Ejemplo 3. Sin embargo, hay dos excepciones importantes:
xpathse usa en lugar dexpath_oneenproducts._fnscanalización.products._fnsla canalización ahora generará una lista de todos los elementos que coinciden con la expresión XPath proporcionada (una lista de elementos de producto)._itemsla propiedad reservada se usa para indicar que quieres formar una lista iterando sobre cada elemento de laproducts._fnssalida de la canalización y pasando/procesando cada elemento de la lista por separado dentro del ámbito de la canalización.
Si _items la propiedad reservada no se usara en las instrucciones de análisis del Ejemplo 4, el resultado analizado se vería así:
_items se usa para especificar que Custom Parser debe pasar elementos de lista separados en lugar de la lista completa a través de las instrucciones de análisis.
Selecciona el n-ésimo elemento de una lista
Esta sección demuestra la flexibilidad de las canalizaciones. El mismo problema puede abordarse de diferentes maneras.
Se pueden usar varias opciones para seleccionar el n-ésimo elemento de una lista de cualquier valor.
La función HTML de ejemplo se usa de nuevo como ejemplo. Tienes varias opciones para seleccionar el 2.º producto.
Opción 1
Puedes utilizar el selector XPath [] y definir la selección en la expresión XPath.
Ejemplo 5. Selecciona el 2.º precio usando el selector XPath [].
Resultado:
Opción 2
También puedes usar la xpath función para encontrar todos los precios y canalizarlo a la función select_nth, que selecciona el n-ésimo elemento de la lista de precios extraída.
Ejemplo 6. Selecciona el 2.º valor usando la función `select_nth`.
Resultado:
Observa cómo la select_nth función devuelve un elemento de una lista mientras que la xpath función devuelve una lista de elementos, incluso si se encuentra un solo elemento.
Opción 3
Puedes usar select_nth con cualquier tipo de lista, incluidas listas de elementos HTML:
Ejemplo 7. Seleccionando todos los elementos HTML de producto con class="product" ==> seleccionando el 2.º elemento de producto de la lista ==> extrayendo el texto del precio del elemento HTML de producto seleccionado.
Resultado:
Manejo de errores
Cuando se proporciona el siguiente fragmento de HTML:
Y al intentar analizar it con las siguientes instrucciones de análisis:
Custom Parser devolverá un resultado analizado en el que price y title se analizaron normalmente, pero la descripción no se pudo analizar debido al convert_to_float fallo de la función al convertir cadena a float:
Por defecto, todos los errores se cuentan como advertencias y se colocan dentro de la _warnings lista. Si quieres ignorar los errores al analizar un campo, puedes suprimir las advertencias/errores con "_on_error": "suppress" parámetro:
Lo que luego producirá el siguiente resultado:
Matriz de matrices
Custom Parser permite matrices n-dimensionales en los resultados analizados. Como ejemplo, usemos el siguiente fragmento de HTML:
Supongamos que quieres analizar el documento para que el resultado sea una matriz bidimensional 3x3 de enteros:
Para analizar el HTML en el JSON anterior, puedes usar las siguientes instrucciones de análisis:
Última actualización
¿Te fue útil?

