Obtenir l'attribut de l'élément dans XPath

html html-agility-pack xpath

Question

Je veux apprendre le web scraping. Par conséquent, j'ai commencé à pratiquer. J'essaie d'obtenir des données-ad-id à partir de HTML aide de XPath .

Structure HTML comme ceci:

<body id="z1234">
    <div class="viewport">
        <div class="g-row">
            <div class="g-col-9">
                <div class="cBox cBox--content cBox--resultList">
                    <div class="cBox-body cBox-body--resultitem dealerAd rbt-reg rbt-no-top"><a class="link--muted no--text--decoration result-item" href="url" data-ad-id="248059713"></a>
                </div>
            </div>
        </div>
    </div>
</body>

XPath pour <a class="link--muted no--text--decoration result item" > est //*[@id="z1234"]/div[3]/div[4]/div[2]/div[1]/div[11]/a . Si je choisis une voiture différente, seule la dernière division change.

En fonction de cela, j'écris du code C# :

<body id="z1234">
    <div class="viewport">
        <div class="g-row">
            <div class="g-col-9">
                <div class="cBox cBox--content cBox--resultList">
                    <div class="cBox-body cBox-body--resultitem dealerAd rbt-reg rbt-no-top"><a class="link--muted no--text--decoration result-item" href="url" data-ad-id="248059713"></a>
                </div>
            </div>
        </div>
    </div>
</body>

Je ne peux rien obtenir de ce nœud. C'est nul. Comment puis-je obtenir data-ad-id?

EDIT je change mon code C #:

<body id="z1234">
    <div class="viewport">
        <div class="g-row">
            <div class="g-col-9">
                <div class="cBox cBox--content cBox--resultList">
                    <div class="cBox-body cBox-body--resultitem dealerAd rbt-reg rbt-no-top"><a class="link--muted no--text--decoration result-item" href="url" data-ad-id="248059713"></a>
                </div>
            </div>
        </div>
    </div>
</body>

Maintenant, je peux obtenir data-ad-id.

Réponse acceptée

Selon le code du site, je pourrais sentir que vous n’avez pas de texte intérieur pour cette balise "A". Il ne contient que les balises DIV et IMG.

Vous devrez récupérer data-ad-id en utilisant

//a[@data-ad-id]/@data-ad-id



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi