Aprendizado do rastreador Python 27

Aprendizado do rastreador Python 27

Continue aprendendo Xpath hoje

Continuação do artigo anterior

5. O segundo uso do Xpath

Se você não estiver familiarizado, por favor, anexe as regras primeiro:

insira a descrição da imagem aqui

5-5 Nós filhos

Use / ou // para encontrar os nós filhos de um elemento.

from lxml import etree

html = etree.parse('./text.html', etree.HTMLParser())
# 检索所有li节点下的a节点
result = html.xpath('//li/a')
print(result)

resultado da operação:

insira a descrição da imagem aqui

Obviamente, o exemplo acima é encontrar os nós filhos diretos em um nó específico. Para encontrar todos os nós filhos dentro de um nó:

from lxml import etree

html = etree.parse('./text.html', etree.HTMLParser())
result = html.xpath('//ul//a')
print(result)

resultado da operação:

insira a descrição da imagem aqui

Claro, o resultado é o mesmo para o html que selecionamos, e os significados expressos pelos dois métodos acima eram completamente diferentes naquele momento.

Em seguida, por favor, pense, se escrevermos o Xpath da seguinte forma, quais resultados serão correspondidos?

'//ul/a'
from lxml import etree

html = etree.parse('./text.html', etree.HTMLParser())
result = html.xpath('//ul/a')
print(result)

Para a linguagem Xpath, a / representa o nó direto a sob o nó ul, então o resultado é claro:

insira a descrição da imagem aqui

5-6 Nó pai

Sabendo como consultar nós filhos e nós descendentes, como consultar nós pais?

Desta vez mudei um pedaço de html, por exemplo, queremos encontrar o nó div aqui

insira a descrição da imagem aqui

Se o nó h1 cujo atributo de classe é baikeLogo for selecionado e quisermos obter o atributo id de seu nó pai, podemos fazer isso:

from lxml import etree

html = etree.parse('./python.html', etree.HTMLParser())
result = html.xpath('//h1[@class="baikeLogo"]/../@id')
print(result)

resultado da operação:

insira a descrição da imagem aqui

Você também pode obter o nó pai por meio de pai:::

# parent::
from lxml import etree

html = etree.parse('./python.html', etree.HTMLParser())
result = html.xpath('//h1[@class="baikeLogo"]/parent::*/@id')
print(result)

resultado da operação:

insira a descrição da imagem aqui

5-7 Correspondência de Atributos

Para combinar um nó com um atributo específico, você precisa usar @, que vimos no caso anterior:

Por exemplo, queremos combinar todos os nós li com o atributo de classe li aqui:

insira a descrição da imagem aqui

# 属性匹配

from lxml import etree

html = etree.parse('./python.html', etree.HTMLParser())
result = html.xpath('//li[@class="li"]')
print(result)

Resultados em execução: na captura de tela, podemos ver que deve haver 3 resultados correspondentes e também há três resultados em execução

insira a descrição da imagem aqui

Então a questão é: as três coisas devolvidas a nós são as três que queremos?

É isso por hoje, vamos vendê-lo primeiro. . .

Acho que você gosta

Origin blog.csdn.net/szshiquan/article/details/123999302
Recomendado
Clasificación