2017-09-27 95 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