알려진 ID를 가진 div 아래에있는 모든 div를 가져 와서 반복합니다.

c# dom foreach html-agility-pack

문제

나는 OkCupid 매치를 크롤링하는 앱을 만들고 있습니다. 일치하는 결과에는 다음과 같은 HTML이 포함됩니다.

<div id="match_results">
    <div>person1</div>
    <div>person2</div>
    <div>person3</div>
</div>

나는 match_results div 안에서 foreach person의 div를하고 싶다. 그러나, 내 C # 코드로 뭔가 이상하지 않습니다. matchesList 에는 요소가 하나만 포함되어 있습니다 (그 자체 안에 모든 div가 아닌 ...).

HtmlDocument matchesHtmlDoc = new HtmlDocument();
matchesHtmlDoc.LoadHtml(matches);

string matchResultDivId = "match_results";

// match results
HtmlNodeCollection matchesList = matchesHtmlDoc.DocumentNode.SelectNodes("//div[@id = '" + matchResultDivId + "']");

foreach (HtmlNode match in matchesList)
{
    //test
    Console.WriteLine(match.ToString());
}

수락 된 답변

하위 div를 선택하는 것을 잊었습니다.

HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(matches);

string matchResultDivId = "match_results";
string xpath = String.Format("//div[@id='{0}']/div", matchResultDivId);
var people = doc.DocumentNode.SelectNodes(xpath).Select(p => p.InnerText);

foreach(var person in people)
    Console.WriteLine(person);

산출:

person1
person2
person3


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