Guia de correspondência Xpath para evitar poços

Este artigo resume algumas das armadilhas do xpath encontradas diariamente. Para evitar que todos percam tempo no mesmo lugar, elas são anunciadas. Declare a fonte para reimpressão!

índice

1. Ferramenta de consulta de correspondência Xpath

Dois, a existência de tbody no caminho faz com que a correspondência fique vazia

Terceiro, a correspondência de tags entrelaçadas

Quatro, pule uma certa etiqueta de número de série para corresponder

Cinco, os rótulos dos itens correspondentes são diferentes e o número de correspondências é inconsistente

Sexto, atualize de vez em quando ...


1. Ferramenta de consulta de correspondência Xpath

Há um plug-in no Chrome chamado "XPath Helper". Depois de instalá-lo, pressione "ctrl + shift + x" para invocá-lo e fechá-lo. É muito conveniente de usar e conveniente para depurar se o caminho xpath está escrito corretamente.

Dois, a existência de tbody no caminho faz com que a correspondência fique vazia

Quando houver tbody no caminho correspondente, uma lista vazia será correspondida. O motivo é que o navegador "otimizou" o xpath, e o xpath copiado diretamente do navegador não pode ser correspondido ao executar em python. Por exemplo, há tbody no caminho nos dois casos a seguir :

XXX = XXXX.xpath("//div[@class='tabset']/table[2]/tbody")
XXX = XXXX.xpath("//div[@class='tabset']/table[2]/tbody/tr/td[2]/a/text()")

Neste momento, apenas exclua o "tbody" do caminho.

Terceiro, a correspondência de tags entrelaçadas

Para etiquetas entrelaçadas, existem duas soluções. (1) Você pode ignorar esta tag e encontrar outras tags ou atributos correspondentes. (2) Os dois tipos podem ser combinados separadamente. Depois que o tipo a é correspondido, o tipo b é correspondido novamente e eles podem ser combinados.

Quatro, pule uma certa etiqueta de número de série para corresponder

Por exemplo, se quiser pular a primeira tag <tr>, você pode usar a posição> 1.

XXX.xpath("//tr[position()>1]/td[1]/input/@value").extract()

Cinco, os rótulos dos itens correspondentes são diferentes e o número de correspondências é inconsistente

Às vezes, alguns sites adicionam "NOVO", "VENDA" e outras tags a certos itens, o que faz com que o número de tags correspondentes aos itens na mesma tabela na página da web seja inconsistente. Por exemplo, a situação na figura a seguir:

Neste momento, encontre uma maneira de contornar essa tag "span" extra.

XX.xpath("tr/td[2]/span/a/@href").extract()
# 绕过span标签
XXXX.xpath("tr/td[2]//a/@href").extract()

Sexto, atualize de vez em quando ...

 

 

 


Organizar não é fácil ...

Acho que você gosta

Origin blog.csdn.net/Ryan_lee9410/article/details/107144213
Recomendado
Clasificación