여러 개의 콘텐츠에 액세스하려면 어떻게해야합니까? <div> 태그 HTMLAgilityPack?

c# html html-agility-pack wpf

문제

코드 플렉스 웹 사이트에서 HTMLAgilityPack 에 대한 설명서를 찾을 수 없습니다. 현재 내가 원하는 것은 Amazon 웹 사이트의 div에 액세스하고 WPF 응용 프로그램에서 사용할 텍스트 정보를 다듬는 것입니다.

var getWeb = new HtmlWeb();                     
var doc = getWeb.Load(uri);
HtmlNode ourNode = doc.DocumentNode.SelectSingleNode("//div[@id = 'zg_centerListWrapper']");

이 div에는 약 12 ​​개의 다른 div가 포함되어 있으며 각 div는 best sellers 카테고리의 항목입니다.

각자의 속성에 액세스하기 위해서는 힘들어하는 것처럼 보일 것입니다. (그리고 어떻게 보입니까?) 그래서 대신 DocumentNode.SelectNodes() 사용해야합니까? 어떻게 구현할 수 있습니까? 또한 그런 시간이 지나면 HTMLAgilityPack 대한 설명서가 없다는 것을 믿기 어렵습니다. 어쩌면 YouTube가 현재 내 최고의 소스 인 것 같아서 잘못된 장소를보고있을 것입니다.

수락 된 답변

사실, SelectNodes()SelectSingleNode() 매개 변수는 xpath 표현식 이며 xpath 버전 1.0은 정확합니다 ( xpath 1.0 스펙 참조 ).

XPath는 자체 사양, 문서 및 토론이있는 또 다른 기술입니다. 일반적으로 HtmlAgilityPack (HAP) 특성 대신 xpath 자습서 또는 기사를 검색하여 특정 HTML 요소를 가져 오기 위해 HAP에 전달해야하는 표현의 종류를 더 잘 이해할 수 있습니다.

예를 들어, HTML이 다음과 같다고 가정합니다.

<div id="zg_centerListWrapper">
    <div>I want this</div>
    <div>..and this</div>
    <div>..and this one too</div>
</div>

div직접 자녀에 당신이 관심이야 div[@id = 'zg_centerListWrapper'] 다음, 당신이 그들을 얻을 수있는 다음과 같은 XPath를 사용할 수 있습니다 :

<div id="zg_centerListWrapper">
    <div>I want this</div>
    <div>..and this</div>
    <div>..and this one too</div>
</div>

인기 답변

DocumentNode.Descendants("div") 사용할 수 있습니다.

.Where(div => div.Attributes.Contains("class") && div.Attributes["class"].Value.Contains("best category"))

하지만 그래, 문서가 확실히 도움이 될 ..




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