HtmlAgilityPack으로 innerHTML을 통해 구문 분석하기

c# html-agility-pack selectsinglenode xpath

문제

그냥 이미 파싱 된 정보로부터 정보를 파싱하는 방법을 찾으려하고 있습니다.

foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//div [@class=\"result-link\"]"))
{
    if (node == null)
        Console.WriteLine("debug");
    else
    {
        //string h_url = node.Attributes["a"].Value;
        Console.WriteLine(node.InnerHtml);
    }
}

그래서 당신은 내가 '문자열 h_url'선언으로 무엇을하려하는지 알 수 있습니다. "result-link"div 클래스에는 href 값을 얻기 위해 href 속성이 있습니다. 그래서 기본적으로 연결됩니다.

그것을 알아낼 수 없습니다. Attributes 배열을 사용해 보았습니다.

foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//div [@class=\"result-link\"]"))
{
    if (node == null)
        Console.WriteLine("debug");
    else
    {
        //string h_url = node.Attributes["a"].Value;
        Console.WriteLine(node.InnerHtml);
    }
}

운이 없다.

수락 된 답변

XPath를 사용하여 현재 노드와 관련된 요소를 선택할 수 있습니다.

HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//div[@class='result-link']");
if (nodes != null)
{
    foreach (HtmlNode node in nodes)
    {
        HtmlNode a = node.SelectSingleNode("a[@href]");
        if (a != null)
        {
            // use  a.Attributes["href"];
        }

        // etc...
    }
}



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