Cómo analizar y raspar HTML usando Pyquery

Cómo analizar y raspar HTML usando Pyquery
"Pyquery" es un módulo de Python de terceros que le permite analizar y extraer datos de los documentos "XML" y "HTML". Está inspirado en la biblioteca JQuery JavaScript y presenta una sintaxis casi idéntica, lo que le permite usar muchas funciones a ayuda de ayuda y código de taquigrafía para analizar y manipular el árbol de documentos. Este artículo cubrirá una guía simple sobre Pyquery que lo ayudará a comenzar con el módulo.

Instalación de pyquery

Para instalar Pyquery en Ubuntu, use el comando especificado a continuación:

$ sudo apt install python3-pyquery

También puede instalar la última versión de PyQuery desde el Administrador de paquetes "Pip" ejecutando los siguientes dos comandos en sucesión:

$ sudo apt install python3-pip
$ PIP3 Instalar Pyquery

Para instalar Pyquery en otras distribuciones de Linux, instale "PIP3" desde el Administrador de paquetes y ejecute el segundo comando mencionado anteriormente.

Creación de un árbol de documentos parsable

Antes de poder analizar y extraer datos de un documento HTML, debe crear un árbol de documentos. Puede crear un árbol de documentos a partir de un marcado HTML simple utilizando la muestra de código a continuación:

de Pyquery Import Pyquery como PQ
documento = pq ("Hola mundo !!")
imprimir documento)
Imprimir (tipo (documento))

La primera declaración importa la clase "Pyquery" del módulo "Pyquery". A continuación, se crea una nueva instancia de clase Pyquery. Después de ejecutar la muestra de código anterior, debe obtener la siguiente salida:

Hola Mundo !!

Observe la segunda línea en la salida. Aquí "Documento", que es una instancia de la clase "Pyquery", no devuelve un objeto de tipo de cadena. Puede consultar rápidamente todos los métodos disponibles para la instancia de "documento" agregando la siguiente línea adicional a la muestra de código anterior:

de Pyquery Import Pyquery como PQ
documento = pq ("Hola mundo !!")
Imprimir (Ayuda (documento))

También puede explorar API para la clase Pyquery en línea.

Para crear un árbol de documentos a partir de una URL, use el siguiente código en su lugar (reemplace "URL" con su propia dirección deseada):

de Pyquery Import Pyquery como PQ
documento = pq (url = 'https: // ejemplo.com ')
imprimir documento)

Para crear un archivo HTML local del árbol de documento, use el código siguiente (reemplace el valor del "nombre de archivo" de acuerdo con sus necesidades):

de Pyquery Import Pyquery como PQ
documento = PQ (FileName = 'índice.html ')
imprimir documento)

Ahora que tiene un árbol de documentos, puede comenzar a analizarlo.

Manipulando el árbol de documentos

Puede extraer datos y manipular árboles de documentos utilizando una variedad de métodos. Algunos de los métodos más comunes se enumeran a continuación con muestras. Para todos los métodos utilizables, consulte la API disponible aquí.

Puede usar el método "Texto" para obtener contenido de texto de un elemento:

de Pyquery Import Pyquery como PQ
documento = pq ("

Hola Mundo !!

")
P = documento ('P')
Imprimir (P.texto())

Puede elegir una etiqueta / elemento específico proporcionando su nombre como argumento a la instancia de "documento". Después de ejecutar la muestra de código anterior, debe obtener la siguiente salida:

Hola Mundo !!

Puede obtener atributos de una etiqueta utilizando el método "ATTTR". Para hacerlo, elija una etiqueta que desee analizar ('P' en este caso) y suministrar el nombre del atributo como argumento ('id' en este caso) o usar notación de puntos.

de Pyquery Import Pyquery como PQ
documento = pq ("

Hola Mundo !!

")
P = documento ('P')
imprimir documento)
Imprimir (P.attr ("id"), p.atencia.identificación)

Después de ejecutar la muestra de código anterior, debe obtener la siguiente salida:

Hola Mundo !!

Puede manipular CSS utilizando el método "CSS". Para agregar estilos CSS a

o cualquier otra etiqueta, puede usar el siguiente código:

de Pyquery Import Pyquery como PQ
documento = pq ("

Hola Mundo !!

")
P = documento ('P')
pag.CSS ("color": "rojo")
imprimir documento)
Imprimir (P.attr ("estilo"))

Reemplace la parte "" color ":" rojo "" con sus propios estilos personalizados. Después de ejecutar la muestra de código anterior, debe obtener la siguiente salida y puede verificar que CSS se haya aplicado correctamente:

Hola Mundo !!


color rojo

Si tiene una clase previa al estilo, puede usar el método "AddClass" para aplicar los estilos existentes.

de Pyquery Import Pyquery como PQ
documento = pq ("

Hola Mundo !!

")
P = documento ('P')
pag.addClass ("mystyle")

Puede agregar y prever su propio marcado personalizado utilizando la muestra de código a continuación:

de Pyquery Import Pyquery como PQ
documento = pq ("

Hola Mundo !!

")
P = documento ('P')
pag.prepend ("

Hola

")
pag.adjuntar("

Adiós

")
imprimir documento)

Reemplace los argumentos en el método "Prepend" y "Agregar" con sus propios valores. Después de ejecutar la muestra de código anterior, debe obtener la siguiente salida:

Hola

Hola Mundo !!

Adiós

Para eliminar el contenido de un elemento, use el método "vacío".

de Pyquery Import Pyquery como PQ
documento = pq ("

Hola Mundo !!

")
P = documento ('P')
pag.vacío()
imprimir documento)

Después de ejecutar la muestra de código anterior, debe obtener la siguiente salida:

Puede usar el método "Filtro" para seleccionar elementos específicos cuando hay varias etiquetas del mismo tipo. Por ejemplo, el siguiente código recoge un "

"Etiqueta que tiene una" identificación "como" hola ":

de Pyquery Import Pyquery como PQ
documento = pq ("

Hola

Mundo !!

")
P = documento ('P')
Imprimir (P.Filtro ("#Hello")))

Después de ejecutar la muestra de código anterior, debe obtener la siguiente salida:

Hola

Puede encontrar varias etiquetas / elementos a la vez usando el método "Buscar":

de Pyquery Import Pyquery como PQ
documento = pq ("

Hola

Mundo !!

")
imprimir documento.encontrar ('p'))

Suministrar el nombre de la etiqueta / elemento como argumento al método "Buscar". Después de ejecutar la muestra de código anterior, debe obtener la siguiente salida:

Hola

Mundo !!

Puede cambiar entre analizadores "XML" y "HTML" utilizando un argumento adicional de "analizador":

de Pyquery Import Pyquery como PQ
documento = pq ("

Hola

Mundo !!

", parser =" html ")
imprimir documento)

Si necesita más ayuda con Pyquery, consulte su documentación oficial y ejemplos disponibles aquí.

Conclusión

PyQuery le permite analizar rápidamente los documentos HTML escribiendo un código mínimo, ya que incluye numerosas funciones auxiliares que omiten por completo la necesidad de escribir código personalizado. Su "jQuery" como la sintaxis y la estructura también ayuda a seleccionar elementos y nodos sin profundizar en el árbol de documentos, especialmente cuando hay mucho marcado anidado.