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
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 ...