에서 가치를 얻는 방법 <SELECT><OPTION>

c# html-agility-pack

문제

<select><option> 요소에서 일부 요소를 가져 오려고합니다.

이것은 내 코드입니다.

for(int td = 1; td <= 1; td++)
{
    using (WebClient wc = new WebClient())
    {
        string pagina = wc.DownloadString("http://www.serebii.net/attackdex-xy/");
        HtmlDocument doc = new HtmlDocument();
        doc.LoadHtml(pagina);

        string attacco;
        //var prova = doc.DocumentNode.SelectSingleNode("/html/body/table[2]/tr[2]/td[2]/div[2]/table/tr/td[1]/form/select/option");

        foreach (HtmlNode node in doc.DocumentNode.SelectNodes(String.Format("/html/body/table[2]/tr[2]/td[2]/font/div[2]/table/tr/td[{0}]/select/option", td)))
        {
            attacco = node.NextSibling.InnerText;

            if(attacco != "AttackDex: A - G\n" && attacco != "AttackDex: H - R\n" && attacco != "AttackDex: S - Z\n")
            {
                var url = string.Format("http://www.serebii.net/attackdex-xy/{0}.shtml", attacco.ToLower().Replace(" ", ""));
                string attackPage = wc.DownloadString(url);
                HtmlDocument doc2 = new HtmlDocument();
                doc2.LoadHtml(attackPage);

                var category = doc.DocumentNode.SelectSingleNode("/html/body/table[2]/tr[2]/td[2]");
            }
        }
    }
}

그리고 이것은 html 페이지의 코드입니다 :

for(int td = 1; td <= 1; td++)
{
    using (WebClient wc = new WebClient())
    {
        string pagina = wc.DownloadString("http://www.serebii.net/attackdex-xy/");
        HtmlDocument doc = new HtmlDocument();
        doc.LoadHtml(pagina);

        string attacco;
        //var prova = doc.DocumentNode.SelectSingleNode("/html/body/table[2]/tr[2]/td[2]/div[2]/table/tr/td[1]/form/select/option");

        foreach (HtmlNode node in doc.DocumentNode.SelectNodes(String.Format("/html/body/table[2]/tr[2]/td[2]/font/div[2]/table/tr/td[{0}]/select/option", td)))
        {
            attacco = node.NextSibling.InnerText;

            if(attacco != "AttackDex: A - G\n" && attacco != "AttackDex: H - R\n" && attacco != "AttackDex: S - Z\n")
            {
                var url = string.Format("http://www.serebii.net/attackdex-xy/{0}.shtml", attacco.ToLower().Replace(" ", ""));
                string attackPage = wc.DownloadString(url);
                HtmlDocument doc2 = new HtmlDocument();
                doc2.LoadHtml(attackPage);

                var category = doc.DocumentNode.SelectSingleNode("/html/body/table[2]/tr[2]/td[2]");
            }
        }
    }
}

프로그램을 실행할 때 노드 값 (foreach 블록)은 NULL입니다.

인기 답변

문서의 모든 옵션을 선택한 다음 'SelectURL'이라는 이름의 조상 태그가있는 태그 만 필터링하면됩니다.

doc.DocumentNode.SelectNodes("//option[ancestor::select[@name='SelectURL']]")



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