HTMLAgilityPackすべて選択するノードを選択要素

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);
}

urlsはパブリックListコレクションであることに注意してください。

public List<string> urls = new List<string>();

私のforeachループは例外をスローしています:

オブジェクト参照がオブジェクト インスタンスに設定されていません。

自動車をチェックすると、確かに、 imgsはnullです。この問題の原因を突き止める良い方法はありますか?私はそれが私のXパスかどうか分かりません。

最も不満な部分は、すでに私がそれを働かせていたが、私のファイルバージョンを台無しにして仕事を失ったということです。 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は合法ですか? はい、理由を学ぶ