XPath에서 요소의 속성 가져 오기

html html-agility-pack xpath

문제

웹 스크 레이 핑을 배우고 싶습니다. 그래서 나는 연습을 시작했다. XPath 사용하여 HTML 에서 data-ad-id를 가져 XPath 합니다.

HTML 과 같은 HTML 구조 :

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

<a class="link--muted no--text--decoration result item" > 대한 XPath는 //*[@id="z1234"]/div[3]/div[4]/div[2]/div[1]/div[11]/a . 다른 차량을 선택하면 마지막 div 만 변경됩니다.

이것에 따르면 나는 C# 코드를 작성한다.

var url = "https://suchen.mobile.de/fahrzeuge/search.html?damageUnrepaired=NO_DAMAGE_UNREPAIRED&isSearchRequest=true&maxPowerAsArray=KW&maxPrice=10000&minPowerAsArray=KW&minPrice=10000&scopeId=C";
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            StreamReader sr = new StreamReader(response.GetResponseStream());
            string sourceCode = sr.ReadToEnd();

            HtmlAgilityPack.HtmlDocument document = new HtmlAgilityPack.HtmlDocument();
            document.LoadHtml(sourceCode);




            var rows = document.DocumentNode.SelectNodes("//*[@id='z1234']/div[3]/div[4]/div[2]/div[1]/div[11]");


            foreach (var row in rows)
            {
                var id = row.SelectSingleNode("a[@data-ad-id]").InnerText;
                Console.WriteLine("id:" + id);
            }
        }

이 노드에서 아무것도 얻을 수 없습니다. null입니다. data-ad-id는 어떻게 얻을 수 있습니까?

편집 내 C # 코드를 변경하십시오.

var rows = document.DocumentNode.SelectNodes("//a[@data-ad-id]")[0];
var id = rows.Attributes["data-ad-id"].Value;

이제 data-ad-id. 얻을 수 있습니다 data-ad-id.

수락 된 답변

사이트의 코드에 따라, 당신은 그 "A"태그에 대한 innertext가 없다는 것을 느낄 수 있습니다. 단지 DIV 및 IMG 태그가 포함되어 있습니다.

다음을 사용하여 data-ad-id를 가져와야합니다.

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


아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.