【问题标题】:dealing with meta tags when i cannot know in advance how many there are当我无法提前知道有多少元标签时处理元标签
【发布时间】:2016-01-25 10:46:47
【问题描述】:

我正在尝试分析外部文档中的元标签(特别是文章:标签),其 url 由用户传递给我。

我查看了几个可能的来源,但它们使用标签的方式并不一致:

  1. 有些不使用标签
  2. 有些使用了多个标签
  3. 有些使用带有逗号分隔关键字/短语的单个标签
  4. 有些使用带有描述类型条目的一个标签

我需要做的是将值(无论是跨多个标签、逗号分隔还是描述类型)获取到单个字符串中

我正在使用 htmlAgility Pack,并且能够使用以下代码获取其他值(当我知道只有一个或没有时):

//get html
HtmlDocument htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(sourceHtml);
var artAuthor = htmlDoc.DocumentNode.SelectSingleNode("//meta[@property='article:author']");
try
{
    strARTAuthor = artAuthor.Attributes["content"].Value;
}
catch
{
    strARTAuthor = "";
}

我怀疑我在某个地方需要一个 foreach,但我不确定应该如何构建它。

把一些东西放在

foreach(htmlDoc.DocumentNode.SelectSingleNode("//meta[@property='article:tag']") in htmldoc)

根本不工作。

【问题讨论】:

    标签: c# html html-agility-pack


    【解决方案1】:

    我并不确切知道您观察到的所有类型的meta 标签,但至少,您需要使用SelectNodes() 替换SelectSingleNode() 以使foreach 循环工作:

    var metas = htmlDoc.DocumentNode.SelectNodes("//meta[@property='article:tag']");
    foreach(HtmlNode meta in metas)
    {
        .....
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-29
      • 2015-09-10
      • 1970-01-01
      • 2019-05-11
      • 1970-01-01
      • 2014-03-23
      • 1970-01-01
      • 2018-11-30
      相关资源
      最近更新 更多