Red de conocimiento informático - Problemas con los teléfonos móviles - Cómo utilizar Python XPath

Cómo utilizar Python XPath

En el rastreo web, analizar y localizar nodos html es la clave para obtener información rastreada. Actualmente, estoy usando el módulo lxml (usado para analizar la estructura de documentos XML y, por supuesto, la estructura de html), y uso su lxml.xpath. Para analizar el xpath de html para obtener información de rastreo; los siguientes son algunos usos básicos de xpath:

Antes de presentar xpath, primero presentaré cómo usar python xpath. html para analizar el xpath de html para obtener información de rastreo; los siguientes son algunos usos básicos de xpath:

Antes de presentar las reglas de coincidencia de XPath, primero comprendamos algunos conceptos básicos de XPath. Lo primero que debemos hablar es el tipo de datos XPath. XPath se puede dividir en cuatro tipos de datos:

Conjunto de nodos

Un conjunto de nodos es una colección de nodos calificados devueltos por coincidencia de rutas. Otros tipos de datos no se pueden convertir en conjuntos de nodos.

Valores booleanos

El valor de coincidencia condicional devuelto por una función o expresión booleana es el mismo que un valor booleano en lenguajes comunes, con valores de verdadero y falso. Los valores booleanos se pueden convertir hacia y desde tipos numéricos y de cadena.

Cadena

Una cadena es una colección de caracteres y XPath proporciona una serie de funciones de cadena. Las cadenas se pueden convertir hacia y desde tipos numéricos y booleanos.

Número (número)

En XPath, un número es un número de punto flotante, que puede ser un número de punto flotante de 64 bits de doble precisión. Además, también incluye algunas descripciones especiales de valores numéricos, como NaN (Not-a-Number) no numérico, infinito positivo e infinitesimal, infinito negativo e infinitesimal, 0 positivo y negativo, etc. El valor entero de un valor numérico se puede obtener mediante esta función. Además, los valores numéricos se pueden convertir a tipos booleanos y de cadena.

Los últimos tres tipos de datos son similares a los tipos de datos de otros lenguajes de programación, excepto que el primer tipo de datos es exclusivo de los árboles de documentos XML. Además, dado que XPath contiene una serie de operaciones en el árbol de estructura del documento, también es necesario comprender el tipo de nodo XPath. Debido a la estructura lógica de los documentos XML, un archivo XML puede contener elementos, CDATA, comentarios, instrucciones de procesamiento y otros elementos lógicos. También pueden contener atributos que se pueden utilizar para definir espacios de nombres. Por lo tanto, en XPath, los nodos se dividen en siete tipos de nodos:

Nodo raíz

El nodo raíz es el nivel superior del árbol y el nodo raíz es único. Todos los demás nodos de elementos del árbol son sus hijos o descendientes. El mecanismo para procesar el nodo raíz es el mismo que para otros nodos. La coincidencia de árboles en XSLT siempre comienza desde el nodo raíz.

Nodo de elemento

El nodo de elemento corresponde a cada elemento del documento. Los nodos secundarios del nodo de elemento pueden ser nodos de elemento, nodos de comentarios, nodos de instrucciones de procesamiento y nodos de texto.

Los nodos de elemento pueden tener extensiones, y la extensión consta de dos partes: el URI del espacio de nombres y el nombre local.

Nodo de texto

Un nodo de texto contiene un conjunto de datos de caracteres, los caracteres contenidos en CDATA. Ningún nodo de texto tiene hermanos directos y los nodos de texto no tienen extensiones.

Nodo de atributo

Cada nodo de elemento tiene un conjunto de nodos de atributo asociados a él; el elemento es el nodo padre de cada nodo de atributo, pero el nodo de atributo no es hijo de él; nodo del nodo padre. Esto significa que puede hacer coincidir el nodo de atributo de un elemento buscando sus nodos secundarios, pero no al revés, es solo una calle de sentido único. Además, los nodos de atributos del elemento no tienen disfrute, lo que significa que diferentes nodos de elementos no tienen el mismo nodo de atributo.

Las propiedades predeterminadas se tratan igual que las propiedades definidas. Si un atributo se declara en la DTD pero se declara #IMPLIED y el atributo no está definido en el elemento, el atributo no se incluirá en el conjunto de nodos de atributos del elemento.

Además, los nodos de atributos correspondientes a los atributos no tienen declaración de espacio de nombres.

Los atributos del espacio de nombres corresponden a otro tipo de nodo.

Nodos de espacio de nombres

Cada nodo de elemento tiene un conjunto de nodos de espacio de nombres relacionados. En los documentos XML, los espacios de nombres se declaran a través de atributos reservados, por lo que en XPath, esta clase de nodos es muy similar a los nodos de atributos en el sentido de que tienen una relación unidireccional con el elemento principal, en lugar de ser muy agradables.

Nodos de instrucciones de procesamiento

Un nodo de instrucciones de procesamiento corresponde a cada instrucción de procesamiento en el documento XML. También tiene una extensión que tiene un nombre local y apunta al objeto de procesamiento, mientras que la parte del espacio de nombres está vacía.

Nodos de comentarios

Los nodos de comentarios corresponden a los comentarios del documento. A continuación, construiremos un árbol de documentos XML:

¡Empiece ahora! Algunas formas básicas de hacer coincidir nodos en XML usando XPath.

Coincidencia de rutas

La coincidencia de rutas es similar a la representación de rutas de archivos y es más fácil de entender. Hay varios símbolos:

Símbolos

Importancia

Ejemplos

Resultados

/

Representa la ruta del nodo

/A/C/D

El nodo secundario del nodo "A". "D" del nodo "C", es decir, el nodo D con valor de id d2

/

Nodo raíz

/

Todas Todas las rutas comienzan con la subruta especificada después de "//". "Seguido de la subruta especificada

/E

todos los elementos E, el resultado son los tres elementos E

/C/E

Todos los elementos E cuyo nodo padre es C, el resultado son dos elementos E con valores de id e1 y e2

Carácter comodín de la ruta

/A /B/C/*

Elemento A → Elemento B → Todos los elementos secundarios bajo el elemento C, es decir, elemento B con valor de nombre b, elemento D con valor de id d1 y valor de id e1 y Los dos elementos E de e2

/*//*/D

El elemento D y los nodos dos niveles por encima de él, y el resultado coincidente es el elemento D< con la identificación valor de d2 p>/*

Todos los elementos

|

O lógico

//B | >

Todos los elementos B y C

Coincidencia de posiciones

Para cada elemento, sus elementos secundarios están ordenados.

Por ejemplo

Ejemplo

Ejemplo

Resultado coincidente

/A/B/C[1]

Elemento El primer elemento hijo de A→Elemento B→Elemento C

El elemento B con nombre valor b

/A/B/C[last()]

Elemento A→Elemento B→El último elemento hijo del elemento C

Elemento E con valor de id e2

/A/B/C[position()> /p>

Elemento A → Elemento B → Elemento con número de posición mayor que 1 bajo el elemento C

Elemento D con valor de id d1 y dos elementos E con valor de id

Atributos y valores de atributos

En XPath, los atributos y valores de atributos se pueden utilizar para hacer coincidir elementos. Cabe señalar que el nombre del atributo del elemento debe tener el prefijo "@". Por ejemplo

Ejemplo

Ejemplo

Resultados coincidentes

/B[@id]

Todos con atributo Elementos id B

Dos elementos B con valores id b1 y b2

/B[@*]

Todos los elementos B con atributos

Dos elementos B con el atributo id y uno con el atributo name Dos elementos B con el atributo name