El módulo PyQuery también es un módulo para analizar html. Es similar a Beautiful Soup. Está implementado por jquery. Es similar a la sintaxis de jquery. Es más conveniente para las personas que pueden usar jquery.
Pyquery necesita confiar en el módulo lxml, si no está instalado, informará un error.
Instalar
pip install lxml pip install pyquery
3 formas de analizar HTML
desde pyquery import PyQuery html = "" " <html><head><title>Baidu</title> </head> <cuerpo> <div> <p class = "content"> 搜索 <a href="http://www.baidu.com" class="link" id="link1"> <! - 首页 -> </a>, <a href="http://www.baidu.com/page/3.html" class="link" id="link2"> 搜索 1 </a> y <a href="http://www.baidu.com/page/47.html" class="link" id="link3"> 搜索 2 </a>; Haga clic en el enlace de arriba. </ P> <p class = "content">. Esta es una ubicación publicitaria. </ p> <p class = "title"> 百度 </p> </div> </body> </html> "" " doc = PyQuery (url = 'http: //www.baidu.com') #Especifique url, código fuente html en url doc2 = PyQuery (html) #Specify html string doc3 = PyQuery (filename = 'index.html') #Especifique el archivo imprimir (doc) imprimir (doc2) imprimir (doc3)
selector css
css también se ha usado en el módulo bs, el uso es similar. Los detalles son los siguientes
print (doc2 ('. link')) #via clase print (doc2 ('# link1')) #por id print (doc2 ('. content, # link1')) #find todas las clases con contenido y id link1 print (doc2 ('. content # link1')) # Encuentra el elemento con id link1 bajo content print (doc2 ('a')) # Buscar todas las etiquetas print (doc2 ('[href]')) # Encuentra todos los elementos con el atributo href print (doc2 ('a [target = _blank]')) # Encuentra el objetivo con _blank debajo de la etiqueta a
Métodos comunes
# eq método, obtenga los primeros elementos a_tags = doc2 ('a') print (a_tags.eq (0)) # el primero en una etiqueta print (a_tags.eq (1)) # el segundo en una etiqueta # artículos() # Si encuentra varios elementos, si desea recorrer los elementos, debe usar el método .items (), los elementos son para reciclar a_tag = doc2 ('a') para a en a_tag.items (): print (a.text ()) # text () 、 html () El método # text () es obtener el texto dentro del elemento, html () es obtener el elemento html del elemento a = doc2 ('. contenido') print (a.html ()) # formato html print (a.text ()) # Solo el texto dentro # método find, encuentra elementos print (doc2.find ('p'). find ('a')) # Encuentra la etiqueta a de todas las etiquetas p print (doc2.find ('p')) # encuentra todas las etiquetas p print (doc2.find ('. content')) # encuentra todas las clases con contenido # método de filtro, utilizado para filtrar print (doc2.find ('a'). filter ('# link1')) # Primero encuentre la etiqueta a, luego filtre la identificación con link1 de la etiqueta a # método attr, obtener atributos print (doc2 ('# link1'). attr (('href'))) # Obtiene el valor de atributo de href con id de link1