[Rastreador web Python] 150 conferencias para obtener fácilmente las notas del curso pago del rastreador web Python Capítulo 7: biblioteca de análisis del rastreador XPath

1. Comprender XPath

1.1 ¿Qué es XPath?

XPath es un lenguaje para buscar información en documentos XML y HTML que se puede utilizar para atravesar elementos y atributos en documentos XML y HTML.

1.2 herramientas de desarrollo XPath

complemento de Chrome XPath Helper

Complemento de Firefox Prueba XPath

1.3 nodo XPath

Hay siete tipos de nodos: elemento, atributo, texto, espacio de nombres, instrucción de procesamiento, comentario y nodo de documento (raíz).

Los documentos XML se tratan como un árbol de nodos. La raíz del árbol se denomina nodo de documento o nodo raíz.

 

2. Sintaxis XPath

2.1 Expresión de ruta

Utilice expresiones de ruta para seleccionar nodos o conjuntos de nodos en el documento XML.

Seleccione varias rutas con | operador 

2.2 Predicado 

El predicado se usa para encontrar un nodo específico o un nodo que contiene un valor específico. Está incluido entre corchetes [] . Tenga en cuenta que el número de secuencia en [] comienza desde 1.

2.3 comodín

* Significa comodín

2.4 Operador

 

3. Biblioteca LXML

lxml es un analizador HTML / XML cuya función principal es cómo analizar y extraer datos HTML / XML.

3.1 Uso básico

3.1.1 Analizar el código

from lxml import etree

text = '''
<div>
    <ul>
        <li class="item-0"><a href="link1.html">first item</a></li>
        <li class="item-1"><a href="link2.html">second item</a></li>
        <li class="item-inactive"><a href="link3.html">third item</a></li>
        <li class="item-1"><a href="link4.html">fourth item</a></li>
        <li class="item-0"><a href="link5.html">fifth item</a></li>
    </ul>
</div>
'''

#将字符串解析未html文档
html = etree.HTML(text)
print(html)

#字符串序列化html
result = etree.tostring(html).decode('utf-8')
print(result)

3.1.2 Lea el código HTML del archivo:

from lxml import etree

#读取
html2 = etree.parse('text.html')
result2 = etree.tostring(html2).decode('utf-8')
print(result2)

Cuando use parse para leer archivos HTML, preste atención a la integridad de las etiquetas en el archivo html; de lo contrario, se informará un error.

 

3.2 Utilice la sintaxis XPath en lxml

from lxml import etree

html = etree.parse('text.html')
#获取所有li
result1 = html.xpath('//li')
# print(result)
for i in result1:
    print(etree.tostring(i).decode('utf-8'))

# 获取所有li元素下所有class 属性值
result2 = html.xpath('//li/@class')
print(result2)

# 获取所有li元素下href = "www.baidu.com"的a
result3 = html.xpath('//li/a[@href="www.baidu.com"]')
print(result3)

# 获取所有li元素下span标签 用//
result4 = html.xpath('//li//span')
print(result4)

# 获取所有li元素下a标签的所有class
result5 = html.xpath('//li/a//@class')
print(result5)

# 获取最后一个li元素下a标签的href对应的值
result6 = html.xpath('//li[last()]/a/@href')
print(result6)

# 获取最后二个li元素下内容
result7 = html.xpath('//li[last()-1]/a')
print(result7)
print(result7[0].text)

# 获取最后二个li元素下内容 第二种方式
result7 = html.xpath('//li[last()-1]/a/text()')
print(result7)
# print(result7[0].text)

 

Supongo que te gusta

Origin blog.csdn.net/weixin_44566432/article/details/108593014
Recomendado
Clasificación