【问题标题】:Get value of an attribute by HtmlAgilityPack [duplicate]通过 HtmlAgilityPack 获取属性的值 [重复]
【发布时间】:2017-01-16 01:44:34
【问题描述】:
<div class="vcard-names-container py-3 js-sticky js-user-profile-sticky-fields " style="position: static;">
  <h1 class="vcard-names">
    <span class="vcard-fullname d-block" itemprop="name">Name 001</span>
    <span class="vcard-username d-block" itemprop="additionalName">Name 002</span>
  </h1>
</div>

您好,我想知道如何检索此结构的名称('Name 001' 和 'Name 002')我做了几次测试,但无法解析这些值,我该如何实现?

(注意:对不起我的英语不好)

【问题讨论】:

  • Duplicate 显示了如何按照您的要求获取属性,但根据帖子的正文,您可能需要元素的文本而不是元素的属性值。在这种情况下,stackoverflow.com/questions/4358696/… 就是答案。

标签: c# html-agility-pack


【解决方案1】:

您可以使用XPath查询文档节点以找到您要查找的节点:

static void Main(string[] args)
{
    var html = @"<div class=""vcard - names - container py - 3 js - sticky js - user - profile - sticky - fields "" style=""position: static; "">
           < h1 class=""vcard-names"">
            <span class=""vcard-fullname d-block"" itemprop=""name"">Name 001</span>
            <span class=""vcard-username d-block"" itemprop=""additionalName"">Name 002</span>
          </h1>
        </div>";

    HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
    doc.LoadHtml(html);

    var names = doc.DocumentNode.SelectNodes("//span").Select(x => x.InnerText);
    foreach (var name in names)
    {
        Console.WriteLine(name);
    }
    Console.ReadLine();
}

【讨论】:

    【解决方案2】:

    这可能对你有用

    HtmlDocument doc = new HtmlDocument();
    doc.Load(YourHTMLFile);
    foreach(HtmlNode Spans in doc.DocumentNode.SelectNodes("//span"))
    {
        Console.WriteLine(Spans.InnerText);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-08
      • 2012-08-13
      • 2014-12-01
      • 1970-01-01
      • 2018-09-26
      • 1970-01-01
      • 2015-08-28
      • 1970-01-01
      相关资源
      最近更新 更多