如果元标记不存在,如何提取描述?

时间:2013-05-12 16:00:08

标签: html-parsing html-agility-pack

许多网页没有描述元标记,例如维基百科。 Here说,如果标签不存在,那么搜索引擎就像Google获得更短的段落。我不知道如何使用HtmlAgilityPack实现此行为?如果元标记为空或不存在,则从文本中获取较短的段落。下面的示例工作在描述存在时。

String description = (from x in content.DocumentNode.Descendants()
                      where x.Name.ToLower() == "meta"
                      && x.Attributes["name"] != null
                      && x.Attributes["name"].Value.ToLower() == "description"
                      select x.Attributes["content"].Value).FirstOrDefault();

1 个答案:

答案 0 :(得分:0)

你可以使用XPATH,这样的东西,包装在一个方法中:

    static string GetMetaDescription(HtmlDocument doc)
    {
        // get a META element recursively in the document
        // which has a NAME attribute equal to 'description'
        // and a non empty CONTENT attribute.
        HtmlNode node = doc.DocumentNode.SelectSingleNode("//meta[@name='description' and @content]");
        if (node == null)
            return null;

        // get the value of the CONTENT attribute
        return node.GetAttributeValue("content", null);
    }