C# 使用C HTML agility pack从HTML页面中的特定表中提取图像源
我试图从一个页面中的一个表中提取图像源,但是我的代码目前正在提取整个页面的所有图像源,而不仅仅是一个表。如果您能帮助我从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
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;