2015-11-19 49 views
0

我想通過返回一個HTML的特定部分,以獲得AngleSharp一握。AngleSharp回報跨度ID

到目前爲止,這是我的代碼:

using (WebClient client = new WebClient()) 
     { 
      string htmlCode = client.DownloadString("http://www.planetradio.de/music/trackfinder.html"); 

      var parser = new HtmlParser(); 
      var document = parser.Parse(htmlCode); 

      var blueListItemsLinq = document.All.Where(m => m.LocalName == "span id" && m.ClassList.Contains("headerTracklistCurrentSongArtist")); 

      foreach (var item in blueListItemsLinq) 


       label.Content = item; 
     } 

什麼,我想這回是當前的藝術家應該是在HTML下:

<div id="headerTracklistCurrentSong"> 

     <span id="headerTracklistCurrentSongArtist"><a href="music/trackfinder.html">Olly Murs</a></span> 
     <span id="headerTracklistCurrentSongTitle"><a href="music/trackfinder.html">Kiss Me</a></span>    

但我似乎搞錯了....所以我會很高興,如果有人可以幫助我在這裏,並解釋給我...

提前感謝大家的回答。 :)

回答

2

元素被解析爲AngleSharp.Dom.Html.HtmlSpanElement 的跨度,以便您的查詢應該是:

var blueListItemsLinq = document.All.Where(m => m.LocalName == "span" && m.Id == "headerTracklistCurrentSongArtist"); 

然後你就可以得到文本/值這樣的:

foreach (var item in blueListItemsLinq) 
{ 
    label.Content = item.TextContent; // "Olly Murs" 
    var child = item.FirstChild as AngleSharp.Dom.Html.IHtmlAnchorElement; 
    var text = child.Text;    // "Olly Murs" 
    var path = child.PathName;   // "/music/trackfinder.html" 
} 

修訂

由於currnt藝術家的名字在「planetradio.de/musi顯示在表c/trackfinder.html「,你可以得到這樣的名字:

var hitfinderTable = document.All.Where(m => m.Id == "hitfindertable").First() as AngleSharp.Dom.Html.IHtmlTableElement; 

foreach (var row in hitfinderTable.Rows) 
{ 
    var artistName = row.Cells[2].TextContent; 
} 
+0

謝謝你的回答!但我還是無法從中得到任何信息/文本出來....我沒有得到任何錯誤或者雖然.... :( – scitch

+0

@scitch你可以從'item.TextContent'文本在' foreach'循環。 – jhmt

+0

再次感謝我真的很抱歉打擾你了。我想,很好,但它似乎沒有工作....因爲我在這個我真的新我實際上並不能肯定我得到了正確的HTML很抱歉,如果我要問你,但我要確保: 這是我想從網絡元素來獲取代碼(至少我認爲是這樣的一個我需要的....) :? Dj Snake & Alunageorge 而且我得到planetradio.de/Music/trackfinder.html所以理論上它應該是正確的.....應該沒有吧 – scitch