Pitón

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 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 auxiliares y código abreviado para analizar y manipular el árbol del documento. 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 que se especifica 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 analizable

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 el ejemplo de código a continuación:

desde pyquery importar PyQuery como pq
document = 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 la clase PyQuery. Después de ejecutar el ejemplo de código anterior, debería obtener el siguiente resultado:

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 cadena. Puede consultar rápidamente todos los métodos disponibles para la instancia de "documento" agregando la siguiente línea adicional al ejemplo de código anterior:

desde pyquery importar PyQuery como pq
document = pq ("Hola Mundo !!")
imprimir (ayuda (documento))

También puede navegar por la API para la clase PyQuery en línea.

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

desde pyquery importar PyQuery como pq
document = pq (url = 'https: // ejemplo.com ')
imprimir documento)

Para crear un archivo HTML local en forma de árbol de documentos, use el siguiente código (reemplace el valor de "nombre de archivo" según sus necesidades):

desde pyquery importar PyQuery como pq
document = pq (nombre de archivo = 'índice.html ')
imprimir documento)

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

Manipulación del á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 ejemplos. Para conocer todos los métodos utilizables, consulte la API disponible aquí.

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

desde pyquery importar PyQuery como pq
document = pq ("

Hola Mundo !!

")
p = documento ('p')
imprimir (p.texto())

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

Hola Mundo !!

Puede obtener los atributos de una etiqueta mediante el método "attr". Para hacerlo, elija una etiqueta que desee analizar ('p' en este caso) y proporcione el nombre del atributo como un argumento ('id' en este caso) o use la notación de puntos.

desde pyquery importar PyQuery como pq
document = pq ("

Hola Mundo !!

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

Después de ejecutar el ejemplo de código anterior, debería obtener el siguiente resultado:

Hola Mundo !!

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

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

desde pyquery importar PyQuery como pq
document = pq ("

Hola Mundo !!

")
p = documento ('p')
pag.css ("color": "rojo")
imprimir documento)
imprimir (p.attr ("estilo"))

Reemplace la parte "" color ":" red "" con sus propios estilos personalizados. Después de ejecutar el ejemplo de código anterior, debería obtener el siguiente resultado y puede verificar que CSS se haya aplicado correctamente:

Hola Mundo !!


color rojo

Si tiene una clase con estilo previo, puede usar el método "addClass" para aplicar estilos existentes.

desde pyquery importar PyQuery como pq
document = pq ("

Hola Mundo !!

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

Puede agregar y anteponer su propio marcado personalizado utilizando el ejemplo de código a continuación:

desde pyquery importar PyQuery como pq
document = pq ("

Hola Mundo !!

")
p = documento ('p')
pag.anteponer ("

Hola

")
pag.adjuntar("

Adiós

")
imprimir documento)

Reemplace los argumentos en el método "anteponer" y "agregar" con sus propios valores. Después de ejecutar el ejemplo de código anterior, debería obtener el siguiente resultado:

Hola

Hola Mundo !!

Adiós

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

desde pyquery importar PyQuery como pq
document = pq ("

Hola Mundo !!

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

Después de ejecutar el ejemplo de código anterior, debería obtener el siguiente resultado:

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

"Etiqueta que tiene un" id "como" hola ":

desde pyquery importar PyQuery como pq
document = pq ("

Hola

Mundo !!

")
p = documento ('p')
imprimir (p.filter ("# hola"))

Después de ejecutar el ejemplo de código anterior, debería obtener el siguiente resultado:

Hola

Puede encontrar varias etiquetas / elementos a la vez utilizando el método "buscar":

desde pyquery importar PyQuery como pq
document = pq ("

Hola

Mundo !!

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

Proporcione el nombre de la etiqueta / elemento como argumento para el método "buscar". Después de ejecutar el ejemplo de código anterior, debería obtener el siguiente resultado:

Hola

Mundo !!

Puede cambiar entre analizadores "xml" y "html" mediante un argumento "analizador" adicional:

desde pyquery importar PyQuery como pq
document = pq ("

Hola

Mundo !!

", parser =" html ")
imprimir documento)

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

Conclusión

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

WinMouse le permite personalizar y mejorar el movimiento del puntero del mouse en una PC con Windows
Si desea mejorar las funciones predeterminadas del puntero del mouse, use el software gratuito WinMouse. Agrega más funciones para ayudarlo a aprovech...
El botón de clic izquierdo del mouse no funciona en Windows 10
Si está utilizando un mouse dedicado con su computadora portátil o computadora de escritorio, pero el el botón izquierdo del mouse no funciona en Wind...
El cursor salta o se mueve aleatoriamente mientras escribe en Windows 10
Si descubre que el cursor del mouse salta o se mueve por sí solo, automáticamente, de manera aleatoria mientras escribe en una computadora portátil o ...