Python3 [Pyquery de la biblioteca de análisis]

1. Introducción a pyquery

  Lo anterior describe el uso de Beautiful Soup, encontrará que los selectores CSS no son tan potentes, a continuación

Aprender pyquery compensa los selectores CSS

Instalar:

pip install pyquery

 

2. Uso básico

html = '' ' 
<! DOCTYPE html> 
<html> 
<head> 
    <title> 故事 </title> 
</head> 
<body> 
   <p class = "title" name = "dromouse"> <b> 这个 是 dromouse </b> </p> 
   <p class = "story"> Había una vez tres hermanas pequeñas; 
       y sus nombres eran 
       <a href="http://www.baidu.com" class="sister" id="link1"> <! - GH -> </a> 
       <a href = "http: / /www.baidu.com/oracle "class =" sister "id =" link2 "> Local </a> y 
       <a href =" http://www.baidu.com/title "class =" sister "id = "link3"> 


Tillie </a>; 
   y vivían en el fondo de un pozo. </p> 
   <p class = "story"> ... </p> 
</body> 
</html> '' ' 

de pyqueryImportación pyquery AS pq 

# parámetros objeto pasado pq conocido de 
DOC = pq (HTML) 

# salida de todo el contenido de p etiqueta de 
impresión (DOC ( ' p ' ))

Puedes pasar directamente la URL

de pyquery importación pyquery AS pq 

# parámetros objeto pasado conocido pq de 
DOC = pq (URL = " https://www.baidu.com " ) 

Imprimir (DOC ( ' titulo ' ))

Solicitar archivo también

Importación solicitudes 

de pyquery importación pyquery AS pq 

URL = " https://www.baidu.com " 
# parámetros objeto pasado pq conocido de 
DOC = pq (requests.get (URL) .text) 

Imprimir (DOC ( ' título ' ))

Inicialización de archivo

de pyquery importación pyquery AS pq 

# parámetros objeto pasado conocido pq de 
PQ = DOC (archivo = " demo.html " ) 

Imprimir (DOC ( ' titulo ' ))

 

Tres. Selector CSS básico

  1. Uso básico

desde pyquery importa PyQuery como pq 

doc = pq (url = " https://www.baidu.com " ) 

div = doc ( ' .card .lazyload ' ) 

print (div)

 

 2. Encuentra nodos

   Introduzca la función de consulta. El uso de estas funciones es exactamente el mismo que la función en jQuery.

1. Nodo hijo

El método find () encuentra todos los nodos descendientes

de pyquery importación pyquery AS pq 

DOC = pq (url = " https://www.baidu.com " ) 

div = DOC ( ' .card ' ) 

# Uso de búsqueda para localizar la etiqueta 
img = div.find ( ' img ' ) 

Imprimir ( img)

Solo desea encontrar los nodos secundarios, luego puede usar el método children ()

de pyquery importación pyquery AS PQ 

DOC = PQ (URL = " https://www.baidu.com " ) 

div = DOC ( ' .card ' ) 

# uso de los niños encuentran directa nodo hijo 
IMG = div.children ( ' A ' ) 

imprimir (img)

 

2. El nodo padre

  Podemos usar el método parent () para obtener el nodo padre de un nodo (nodo padre directo)

de pyquery importación pyquery AS PQ 

DOC = PQ (URL = "" ) 

# En primer nodo de localización de 
artículos DOC = ( ' .fa ' ) 

# matriz directa del nodo hijo de 
la contiene = items.parent () 
Imprimir (la contiene)

Si es un nodo abuelo, es decir, el nodo padre del nodo padre usa los padres ()

de pyquery importación pyquery AS PQ 

DOC = PQ (URL = " : //.com HTTPS " ) 

# En primer nodo de localización de 
artículos DOC = ( ' .fa ' ) 

# abuelo del niño nodo de 
la contiene = items.parents () 

Imprimir ( contiene)

3. Nodo hermano

  Si usa nodos hermanos, use el método siblings ()

de pyquery importación pyquery AS PQ 

DOC = PQ (URL = "" ) 

# primer elemento de posicionamiento 
artículos DOC = ( ' .card de texto ' ) 

# nodos hermanos en el mismo nivel 
del contiene = items.siblings () 

Imprimir (la contiene)

4. atravesar

 Pyquery puede seleccionar múltiples nodos o un solo nodo. Para los resultados de múltiples nodos, necesitamos usar el recorrido

de pyquery importación pyquery AS PQ 

DOC = PQ (URL = "" ) 

# pluralidad de nodos 
de lista = DOC ( ' .card ' ) .items () 

Imprimir (tipo (Lista)) 

# iterate cada salida 
para el div en lista: 

    Imprimir (div)

 

5. Obtener información

  Hemos terminado el nodo, luego tenemos que obtener la información en el nodo, obtener el texto u obtener los atributos

Obtener atributo attr ()

de pyquery importación pyquery AS PQ 

DOC = PQ (URL = "" ) 

# pluralidad de nodos, la adición de elementos () representa a todos 
IMG = DOC ( ' .card .lazyload ' ) .items () 

para que en IMG:  
     # Get Atributo 
    img_href = i.attr ( ' data-src ' )
     # img_href = i.attr.data-src 
    print (img_href)

Obtener texto usando text () y html ()

de pyquery importación pyquery AS PQ 

DOC = PQ (URL = "" ) 

# pluralidad de nodos, la adición de elementos () representa a todos 
los infos = DOC ( ' .btn ' ) .items () 

para que en las infos:  
     # Obtener texto 
    info = I .text ()
     # texto de html con 
    info_html = i.html ()
     Imprimir (información, info_html)

El atributo anterior (nombre de atributo, valor de atributo) , texto ("modificar texto") y html ("<a> </a>") pueden modificar parámetros directamente

6. Operación del nodo

  pyquery proporciona una serie de métodos para modificar dinámicamente nodos, como agregar una clase a un nodo, eliminar un nodo, etc. Estas operaciones a veces brindan una gran conveniencia para extraer información

  Los métodos addClass () y removeClass () cambian dinámicamente el atributo de clase de un nodo

de pyquery importación pyquery AS PQ 

DOC = PQ (URL = "" ) 

# consulta 
IMG = DOC ( ' .card Un IMG ' ) 

Imprimir (IMG)
 # clase eliminado de lazyload 
img.removeClass ( ' lazyload ' ) 

Imprimir (IMG)

 

7. Eliminar ()

  El método remove () es eliminar el elemento

desde pyquery importa PyQuery como pq 
html = '' ' 

<div class = "wrap"> 
     Hola, mundo 
     <p> Esto es un hombre </p> 
    </div> 
' '' 
doc = pq (html) 

# 获取 hola mundo 
wrap = doc ( ' .wrap ' ) 

wrap.find ( ' p ' ) .remove () 

print (wrap.text ())

Algunos métodos comúnmente utilizados append (), empty () y prepend () y otros métodos, son completamente consistentes con el uso de jQuery

Documentación oficial: http://pyquery.readthedocs.io/en/latest/api.html

 

8. Selector de pseudo-clase

  

desde pyquery importa PyQuery como pq 
html = '' ' 
<! DOCTYPE html> 
<html> 
<head> 
    <title> 故事 </title> 
</head> 
<body> 
   <p class = "title" name = "dromouse"> <b> 这个 是 dromouse </b> </p> 
   <p class = "story"> Había una vez tres hermanas pequeñas; 
       y sus nombres eran 
       <a href="http://www.baidu.com" class="sister" id="link1"> <! - GH -> </a> 
       <a href = "http: / /www.baidu.com/oracle "class =" sister "id =" link2 "> Local </a> y 
       < a href = "http://www.baidu.com/title" class = "sister" id = "link3"> Tillie </a>; 
   y vivían en el fondo de un pozo. </p> 
   <ul>
 
   <p class = "story"> ... </p>
       <li> 1 </li> 
       <li> 2 </li> 
       <li> 3 </li> 
       <li> 4 </li> 
   </ul> 
    
</body> 
</html> 

'' ' 
doc = pq (html) 

li_f = doc ( " li: primer hijo " ) 
li_l = doc ( " li: último hijo " ) 
li_n = doc ( " li: nth-child (2) " ) 
li_n = doc ( " li: nth -child (2n) " ) 
li_text = doc ( " li:contiene (eran) " ) 
li = doc (" li: gt (2) " )

 

 

 

 

   

 

Supongo que te gusta

Origin www.cnblogs.com/Crown-V/p/12733771.html
Recomendado
Clasificación