我在C#工作。我正在尝试从HTML字符串中提取img标记的第一个实例(实际上是一个帖子数据)。
这是我的代码:
private string GrabImage(string htmlContent)
{
String firstImage;
HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument();
htmlDoc.LoadHtml(htmlContent);
HtmlAgilityPack.HtmlNode imageNode = htmlDoc.DocumentNode.SelectSingleNode("//img");
if (imageNode != null)
{
return firstImage = imageNode.ToString();
}
else
return firstImage=" ";
}
但是在htmlDoc中它变为null,即使我试图从字符串中解析HTML,我也会使用HtmlDocument类型吗?
P.S顺便说一下从HTML字符串中抓取第一个图像标签的正确方法是什么?
答案 0 :(得分:1)
使用您提供的HTML,我制作了这个控制台应用程序。
static void Main(string[] args)
{
var image = GrabImage("<h2>How to learn Photoshop</h2><p> Its <a href=\"/mysite.aspx\">link</a></p><br /> <img src=\"image.jpg\" alt=\"image\"/>");
Console.WriteLine(image);
Console.ReadLine();
}
private static string GrabImage(string htmlContent)
{
String firstImage;
HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument();
htmlDoc.LoadHtml(htmlContent);
HtmlAgilityPack.HtmlNode imageNode = htmlDoc.DocumentNode.SelectSingleNode("//img");
if (imageNode != null)
{
firstImage = imageNode.OuterHtml.ToString();
}
else
firstImage = " ";
return firstImage;
}
我无法找到你所描述的问题。你能说明你调用GrabImage方法的位置吗?
答案 1 :(得分:0)
对于P.S.另外,您需要确保返回imageNode的html文本,而不是对象的名称。
当我在拥有敏捷包的计算机上时,我会尝试为该文档添加一个额外的部分。