我已经对此进行了很多搜索,但它确实没有用。我想获取元标记的content属性中的值。这是我的代码:
public string getTheImagesUrl(string url)
{
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(url);
string xpath = "//meta[@property='og:image'";
StringBuilder sb = new StringBuilder();
foreach (HtmlNode node in doc.DocumentNode.Descendants(xpath))
{
sb.AppendLine(node.Attributes["content"].Value);
}
return sb.ToString();
}
这不会返回任何内容。任何帮助将不胜感激。
答案 0 :(得分:0)
我无法使用HtmlAgilityPack,但这是一个使用AngleSharp
的工作示例var config = Configuration.Default.WithDefaultLoader();
string address = "http://stackoverflow.com";
return (await BrowsingContext.New(config).OpenAsync(address))
.DocumentElement.Descendents()
.Where(x => x.NodeType == NodeType.Element)
.OfType<IHtmlMetaElement>()
.Where(x => x.Attributes["property"]?.Value == "og:image")
.Select(x => x.Attributes["content"]?.Value)
.FirstOrDefault();
答案 1 :(得分:0)
似乎您在查询选择器行中缺少右括号。您只需使用下面的简单代码即可完成所需的工作。
doc.DocumentNode.SelectSingleNode("//meta[@property='og:image']").GetAttributeValue("content", null);