2012-11-21 2 views
0

다음 HTML 파일을 구문 분석하려고합니다. 키 값을 얻고 싶습니다. 이 작업은 Windows Phone 용 Silverlight에서 수행됩니다.C#, 사이트에서 정보를 얻으십시오

</tr> 
<tr><td width="26"><div style="width: 26px; height: 1px;"><spacer type="block" width="26" height="1" /></div></td><td width="60" id="tbtime">10:00</td><td width="70%" id="tbcol"><a href="/repertoir/filminfo.php?id=596">Ральф</a></td><td width="30%" id="tbcol" align="center">100 руб.</td></tr><tr><td width="26" height="4"><div style="width: 26px; height: 4px;"><spacer type="block" width="26" height="4" /></div></td><td width="60"></td><td width="100%" colspan="2"></td></tr><tr><td width="26"><div style="width: 26px; height: 1px;"><spacer type="block" width="26" height="1" /></div></td><td width="60" id="tbtime">12:00</td><td width="70%" id="tbcol"><a href="/repertoir/filminfo.php?id=595"> Сумерки. Сага. Рассвет: Часть 2</a></td><td width="30%" id="tbcol" align="center">100 - 120 руб.</td></tr><tr><td width="26" height="4"><div style="width: 26px; height: 4px;"><spacer type="block" width="26" height="4" /></div></td><td width="60"></td><td width="100%" colspan="2"></td></tr><tr><td width="26"><div style="width: 26px; height: 1px;"><spacer type="block" width="26" height="1" /></div></td><td width="60" id="tbtime">14:20</td><td width="70%" id="tbcol"><a href="/repertoir/filminfo.php?id=595"> Сумерки. Сага. Рассвет: Часть 2</a></td><td width="30%" id="tbcol" align="center">120 - 150 руб.</td></tr><tr><td width="26" height="4"><div style="width: 26px; height: 4px;"><spacer type="block" width="26" height="4" /></div></td><td width="60"></td><td width="100%" colspan="2"></td></tr><tr><td width="26"><div style="width: 26px; height: 1px;"><spacer type="block" width="26" height="1" /></div></td><td width="60" id="tbtime">16:40</td><td width="70%" id="tbcol"><a href="/repertoir/filminfo.php?id=607">Бункер</a></td><td width="30%" id="tbcol" align="center">150 руб.</td></tr><tr><td width="26" height="4"><div style="width: 26px; height: 4px;"><spacer type="block" width="26" height="4" /></div></td><td width="60"></td><td width="100%" colspan="2"></td></tr><tr><td width="26"><div style="width: 26px; height: 1px;"><spacer type="block" width="26" height="1" /></div></td><td width="60" id="tbtime">18:40</td><td width="70%" id="tbcol"><a href="/repertoir/filminfo.php?id=595"> Сумерки. Сага. Рассвет: Часть 2</a></td><td width="30%" id="tbcol" align="center">150 - 180 руб.</td></tr><tr><td width="26" height="4"><div style="width: 26px; height: 4px;"><spacer type="block" width="26" height="4" /></div></td><td width="60"></td><td width="100%" colspan="2"></td></tr><tr><td width="26"><div style="width: 26px; height: 1px;"><spacer type="block" width="26" height="1" /></div></td><td width="60" id="tbtime">21:00</td><td width="70%" id="tbcol"><a href="/repertoir/filminfo.php?id=595"> Сумерки. Сага. Рассвет: Часть 2</a></td><td width="30%" id="tbcol" align="center">150 - 180 руб.</td></tr><tr><td width="26" height="4"><div style="width: 26px; height: 4px;"><spacer type="block" width="26" height="4" /></div></td><td width="60"></td><td width="100%" colspan="2"></td></tr></table> 
<br /><br /> 
<br /><br /> 

public void myparsing() 
    {   
     HtmlAgilityPack.HtmlDocument document = new HtmlAgilityPack.HtmlDocument(); 
     WebClient webClient = new WebClient(); 
     document.LoadHtml(webClient.DownloadString("http://udokan.chita.ru/")); 
     var node = document.DocumentNode.SelectSingleNode("//body/table/tr/td[4]/table"); 
     if (node != null) 
     { 
      var innerText = node.InnerText;    
      richTextBox1.AppendText(innerText); 
     }  

    } 

나는 repertoir에 대한 정보를 얻고 싶습니다.하지만 그럴 수 없습니다. 나는 HttpAgilityPack에 문제가있다. 메서드 SelectNodes가 작동하지 않습니다. 도와주세요. 나쁜 영어로 유감스럽게 생각합니다.

답변

0

나는 100 % 확신하지만 내 머리 꼭대기에서 나는 생각이 :

가 마음에 웹 클라이언트를 유지하고 실버 라이트 asynchronusly 작동합니다. LoadHtml 메서드에 전달하기 전에 Html이 다운로드되었는지 확인하십시오. 따라서 DownloadStringAsync로 작업하고 전체 콜백에서 문서를로드하는 것이 좋습니다.

문자열로 html 소스의 복사본을 시작하고 XPath 쿼리가 올바른지 확인하십시오.

당신의 HTML 사이트를 보면 소스가 전혀 없다 "// 몸/테이블/TR/TD [4]/테이블"

1 표는 4 개 TD 요소를 가지고 // 몸/테이블에있다 하지만 ..

그래서 논문 그냥 몇 가지 생각하고 나는 그것이 도움이되기를 바랍니다 ... ...이 제로 인덱스 배열을 숙지 그래서 등 elemen TD를 [3] 것

0

당신 다음과 같이 할 수 있습니다.

 public void MyParsing() 
    { 
     const string baseUrl = "http://udokan.chita.ru/"; 
     var htmlDoc = new HtmlDocument(); 
     var webClient = new WebClient(); 
     htmlDoc.LoadHtml(webClient.DownloadString(baseUrl)); 
     var htmlNodeCollection = htmlDoc.DocumentNode.SelectNodes("//a[@href]"); 
     if (htmlNodeCollection != null) 
     { 
      foreach (var link in htmlNodeCollection) 
      { 
       try 
       { 
        if(link.Attributes["href"].Value.Contain("repert")) 
        { 
        var newUrl = new Uri(new Uri(baseUrl), link.Attributes["href"].Value).AbsoluteUri; 
        var queries = HttpUtility.ParseQueryString(string.Join(string.Empty, newUrl.Split('?').Skip(1))); 
        var id = queries["id"]; 
        richTextBox1.AppendText(id); 
        } 
       } 
       catch (Exception) 
       { 
       } 
      } 
     } 

    } 
관련 문제