2013-07-12 2 views
0

HtmlAgilityPack을 사용하여 Windows Phone에서 웹 사이트 콘텐츠를 구문 분석하려고합니다. 나의 현재 코드는 다음과 같습니다 현재HtmlAgilityPack ArgumentOutOfRangeException

HtmlWeb.LoadAsync(url, DownloadCompleted); 
... 
void DownloadCompleted(object sender, HtmlDocumentLoadCompleted e) 
    { 
     if (e.Error == null) 
     { 
      HtmlDocument doc = e.Document; 
      if (doc != null) 
      { 
       string test = doc.DocumentNode.Element("html").Element("body").Element("form").Elements("div").ElementAt(2).Element("table").Element("tbody").Elements("tr").ElementAt(4).Element("td").Element("center").Element("div").InnerText.ToString(); 
       System.Diagnostics.Debug.WriteLine(test); 
      } 
     } 
    } 

, 내가 위를 실행할 때, 나는 string test = doc.DocumentNode.Element("html").Element("body").Element("form").Elements("div").ElementAt(2).Element("table").Element("tbody").Elements("tr").ElementAt(4).Element("td").Element("center").Element("div").InnerText.ToString();에서 ArgumentOutOfRangeException을 얻을.

doc.DocumentNode.Element("html").InnerText.ToString() 전체 페이지의 소스 코드를 제공합니다.

내가 구문 분석하는 데 노력하고있어 웹 사이트의 URL은 다음과 같습니다 특정 DIV 후 것 같은 고유 식별자를 한 후 난 당신이하고있는 일을 착각하고 있지 않다 경우 http://polyclinic.singhealth.com.sg/Webcams/QimgPage.aspx?Loc_Code=BDP

답변

1

그것은 보이는 <td class="queueNo"><center><div id="divRegPtwVal">0</div></center></td> .

이유는 단순히 doc.DocumentNode.SelectSingleNode("//div[@id='divRegPtwVal']") 또는 doc.DocumentNode.Descendants("div").Where(div => div.Id == "divRegPtwVal").FirstOrDefault()


이 ID로 특정 이미지에 대한 이미지 소스를 선택 사용하지 :

var attrib = doc.DocumentNode.SelectSingleNode("//img[@id='imgCam2']/@src"); 
//I suspect, might be a slightly different property, I can't check right now 
string src = attrib.InnerText; 

또는를 :

var img = doc.DocumentNode.Descendants("img").Where(img => img.Id=="imgCam2"); 
string src = img.Attributes["Source"].Value; 
+0

예! 그랬어! 정말 고마워! 마지막으로 질문 하나, 에서 'src'를 가져 오려면 어떻게해야합니까? – ReignOfComputer

+0

아, 정말 고마워! : D – ReignOfComputer

+0

아, 실제로 이미지의 InnerText에 null이 생기고 작동하도록 두 번째 이미지 코드를 가져올 수 없습니다. SelectNode는'SelectSingleNode'이어야합니다. – ReignOfComputer