htmllagilitypack选择节点来选择所有的<元素
本文关键字:选择 元素 节点 htmllagilitypack | 更新日期: 2023-09-27 18:12:30
我正在制作一个c#项目,这基本上是一个图像搜索相关游戏的图像屏幕刮板。我试图使用htmllagilitypack来选择所有的图像元素,并把它们放在一个HTMLNodeCollection,像这样:
//set up for checking autos
HtmlNodeCollection imgs = new HtmlNodeCollection(doc.DocumentNode.ParentNode);
imgs = doc.DocumentNode.SelectNodes("//img");
foreach (HtmlNode img in imgs)
{
HtmlAttribute src = img.Attributes["@src"];
urls.Add(src.Value);
}
注意urls是一个公共List集合:
public List<string> urls = new List<string>();
我的foreach循环抛出了一个异常:
对象引用未设置为对象的实例。
检查汽车,果然,imgs为空。有没有更好的办法让我找到问题的根源?我不知道这是我的Xpath还是什么。
最令人沮丧的是,我已经让它工作,但搞砸了我的文件版本,失去了我的工作。Derp .
下面一行可能有打字错误:
HtmlAttribute src = img.Attributes["@src"];
我让这个为我工作(注意@位置):
HtmlAttribute src = img.Attributes[@"src"];
这对我有用。我认为您的文档没有正确加载,因此xpath返回不匹配。
HtmlDocument htmlDocument = new HtmlDocument();
htmlDocument.LoadHtml("<html><head></head><body><div><img /><div><img /><img/></div></div><img/></body></html>");
var nodes = htmlDocument.DocumentNode.SelectNodes("//img");
// 4 nodes found
foreach (var node in nodes)
{
// do stuff
}