2017-09-27 225 views
0

我需要解析一個網站,我知道在哪裏可以找到我要搜索的元素:這是一個spanclass="metadata_with_icon-tags-primary_tag"HtmlAgilityPack找不到元素

我的C#代碼:

var page = new HtmlWeb().Load(url).DocumentNode.Descendants("span").Where(d => d.Attributes.Contains("class") && d.Attributes["class"].Value.Contains("metadata_with_icon-tags-primary_tag")); 

項目,我需要: enter image description here

回答

0

試試這個

HtmlWeb website = new HtmlWeb(); 
      var html = website.Load("https://genius.com/Eminem-space-bound-lyrics").DocumentNode.InnerHtml; 

      Regex rgx = new Regex(@"<script\b[^>]*>([\s\S]*?)<\/script>", RegexOptions.IgnoreCase); 
      var matches = rgx.Matches(html); 
      var g = matches[14].Value; 

      Regex regex = new Regex(
       @"(\[{.*}\])", 
       RegexOptions.Multiline 
      ); 

      Match match = regex.Match(g); 
      var json = match.Value; 
+0

'content'爲null – SmiLe

+0

@SmiLe我在我的測試代碼中檢查了您的鏈接,發現HtmlAgilityPack返回了不同的HTML頁面,然後瀏覽器,並且他不包含「metadata_with_icon-tags-primary_tag」。據我所知,你需要數據'Genre'。Pack返回了我們所有存儲在JS中的數據的html,你可以通過調試來檢查它,你不能用HTML Agility Pack解析javascript,它只支持HTML解析。我會用另一種方法解析javascript(正則表達式,js語法等) – Shadrix

+0

@Smile我更新了我的答案,希望對你有所幫助 – Shadrix

0

爲了讓您的spanclass="metadata_with_icon-tags-primary_tag"

HtmlNode node = htmlDoc.DocumentNode.SelectSingleNode("//span[@class='metadata_with_icon-tags-primary_tag']"); 
+0

'node'爲null – SmiLe

+0

你的文件是否正確加載?在你的根節點? – krlzlx

+0

是的,如果我嘗試獲得某個類的上限,我得到它。例如,我可以得到'song_metadata' – SmiLe