2009-06-07 10 views
1

Je veux récupérer le xpath d'un attribut (exemple "marque" d'un produit d'un site Web de détaillant). Une façon de le faire est d'utiliser des addons comme xpather ou xpath checker pour firefox, en ouvrant le site web en utilisant firefox et en cliquant avec le bouton droit de la souris sur l'objet qui m'intéresse. C'est OK. Mais je veux capturer cette information pour de nombreux attributs et un clic droit sur chaque attribut peut prendre du temps. En outre, l'autre problème que j'ai est que les attributs que je pourrais peut-être intéresser seront là pour un produit. Les autres attributs peuvent être pour un autre produit. Donc, je vais devoir aller ce produit & puis le faire manuellement à nouveau.extrait xpath

Existe-t-il un moyen automatisé ou programmatique de récupérer le xpath des attributs souhaités à partir d'un site Web plutôt que d'avoir à le faire manuellement?

Répondre

1

Vous devez remarquer que tous les sites Web utilisent XML valide que vous pouvez utiliser XPath sur ...

Cela dit, vous devriez vérifier certains HTML parseurs qui vous permettra d'utiliser XPath sur HTML, même si elle est pas un XML valide.

Puisque vous n'avez pas spécifié la technologie avec laquelle vous travaillez - je vous suggérerai le .NET HTML Agility Pack, si vous avez besoin d'autres, recherchez des questions traitant de ceci ici sur SO.

0

La solution que je l'utilise pour ce genre de chose est d'écrire quelque chose d'XPath comme ceci:

//*[text()="Brand"]/following-sibling::* 
//*[text()="Color"]/following-sibling::* 
//*[text()="Size"]/following-sibling::* 
//*[text()="Material"]/following-sibling::* 

Il fonctionne en trouvant tous les éléments (étiquettes) avec le texte que vous voulez, puis regarder à l'autre frère dans le HTML. Pour voir une URL spécifique, je ne peux rien faire d'autre.

Ceci est une version généralisée que vous pouvez faire des versions plus spécifiques en remplaçant les types de balises astérisques, et vous pouvez naviguer différemment en remplaçant l'axe suivant frère par autre chose. J'utilise xPaths dans import.io pour faire des APIs pour ce genre de chose tout le temps, il suffit de trouver un xPath assez générique pour trouver le HTML, peu importe où il se trouve sur la page, mais étant spécifique assez pour obtenir les bonnes données.