HTMLAgilityPack SelectNodes選擇全部分子

c# html html-agility-pack regex xpath

我正在用C#製作一個項目,它基本上是一個用於圖像搜索相關遊戲的圖像屏幕刮刀。我正在嘗試使用HTMLAgilityPack來選擇所有圖像元素並將它們放在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);
}

請注意, url是一個公共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
}



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因