2012-11-21 40 views
0

我試圖解析下面的HTML文件,我想獲取密鑰的值。這是在Silverlight for Windows手機上完成的。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); 
     }  

    } 

我想獲得關於彙輯的信息,但我不能。我有HttpAgilityPack的問題。方法SelectNodes不起作用。 請幫助我,我很抱歉我的英語不好。

回答

0

我不是100%肯定,但是從我的頭頂我有一個想法:

記住,Web客戶端和Silverlight asynchronusly工作。因此,在將Html傳遞給LoadHtml方法之前,請確保已下載該HTML。因此,最好使用DownloadStringAsync並在完整的回調中加載文檔。

我將以html源文件的一個拷貝作爲字符串開頭,並檢查XPath查詢是否正確。在你的HTML網站

展望和源沒有 「//體/表/ TR/TD [4] /表」

有1個表//體/表,有4種TD元素但請記住,這是一個從零開始的索引陣......所以,TD [3]將第四的Elemen ...

所以,這些僅是一些想法,我希望它有助於..

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) 
       { 
       } 
      } 
     } 

    }