C# 使用C HTML agility pack从HTML页面中的特定表中提取图像源

C# 使用C HTML agility pack从HTML页面中的特定表中提取图像源,c#,visual-studio,C#,Visual Studio,我试图从一个页面中的一个表中提取图像源,但是我的代码目前正在提取整个页面的所有图像源,而不仅仅是一个表。如果您能帮助我从html页面的第一个表中提取图像源代码,我将不胜感激 var tables= html.DocumentNode.SelectNodes("//table[1]").ToList(); foreach (var table in tables) { if (html.DocumentNode != null) { var image

我试图从一个页面中的一个表中提取图像源,但是我的代码目前正在提取整个页面的所有图像源,而不仅仅是一个表。如果您能帮助我从html页面的第一个表中提取图像源代码,我将不胜感激

 var tables= html.DocumentNode.SelectNodes("//table[1]").ToList();

 foreach (var table in tables)
 {
     if (html.DocumentNode != null)
     {
         var images = html.DocumentNode.SelectNodes("//img/@src");

         if (images.Any())
         {
             bodyList.AddRange(images.Select(t => t.OuterHtml + (i + 1).ToString()));
         }
     }                  
 }

首先选择表节点而不是图像节点,然后选择图像节点

    var tables = html.DocumentNode.SelectNodes("//table").ToList();
    List<string> bodyList = new List<string>();
    foreach (var table in tables)
    {
        if (html.DocumentNode != null)
        {
            var images = table.SelectNodes("//img/@src");

            if (images.Any())
            {
                bodyList.AddRange(images.Select(t => t.OuterHtml + (i + 1).ToString());
            }
        }                  
    }
这将从html中的所有表中提取图像,仅从第一个表中提取

List<string> bodyList = new List<string>();
var table = html.DocumentNode.SelectNodes("//table").FirstOrDefault();
If (table != null)
{
    bodyList.AddRange(table.SelectNodes("//img/@src").Select(t => t.OuterHtml + (i + 1).ToString());
}

感谢你,仍然在拉页面中的每个链接。你拉每个链接是因为你在搜索整个html.DocumentNode.SelectNodes//img/@src;使用表而不是尝试将//img/@src替换为..//img/@src-这将范围仅限于符合条件的图像,而没有。。以所有实例为例。此外,还应该引用var images=table.SelectNodes..//img/@src;