HtmlAgilityPack에서 null을 반환합니다.

c# html-agility-pack

문제

이 코드를 사용하고 싶지만이 모든 매개 변수에서 NULL을 반환합니다! 문제를 해결하는 방법이나 문제가 무엇인지 알려주세요.

일어난 일을 보여주는 그림을 보려면 여기클릭하십시오 .

코드 :

    HtmlWeb hw = new HtmlWeb();

    private void button1_Click(object sender, EventArgs e)
        {
            Crawler("http://www.avval.ir/directory", 0);
        }

    public void Crawler(string url, int pid)
        {


            try
            {

                HtmlAgilityPack.HtmlDocument doc = hw.Load("http://www.avval.ir/directory");
                HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//a[@class='metatag-topi metatag-keywords']");
                HtmlNodeCollection nodes2 = doc.DocumentNode.SelectNodes("//div[@class='pagination']/a[@href]");
                HtmlNodeCollection phone = doc.DocumentNode.SelectNodes("//p[@class='phone fRight ml10']");

            }
        }

수락 된 답변

이봐 요, xpath selector에 오타가있는 것 같습니다.

HtmlNodeCollection nodes = 
    doc.DocumentNode.SelectNodes("//a[@class='metatag-topi metatag-keywords']");

여기에서는 class 속성 값 metatag-topi metatag-keywords 가진 모든 <a> 태그를 선택하는 //a[@class='metatag-topi metatag-keywords'] 표현식을 사용합니다. 하지만 표현식을 적용하려는 페이지에는 이러한 요소가 포함되어 있지 않지만 <a class="metatag-topic metatag-keywords"> ( topic 의 끝에 c 문자가 누락되어 있습니다) .

해당 행을 다음으로 변경하십시오.

HtmlNodeCollection nodes = 
    doc.DocumentNode.SelectNodes("//a[@class='metatag-topi metatag-keywords']");

작동해야합니다.


인기 답변

노드가 발견되지 않으면 DocumentNode.SelectNodes 는 null을 리턴 할 수 있습니다.

DocumentNode.SelectNodes가 null을 반환하는 이유를 확인할 수 있습니다.




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