c# - HTMLAgilityPack SelectNodes 选择所有 <img> 元素

标签 c# html regex xpath html-agility-pack

我正在用 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 是一个公共(public)列表集合:

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

我的 foreach 循环抛出异常:

Object reference not set to an instance of an object.

检查汽车,果然,imgs 为空。有没有更好的方法可以找到这个问题的根源?我不知道这是我的 Xpath 还是什么。

最令人沮丧的是,我已经让它开始工作了,但弄乱了我的文件版本并丢失了我的工作。德普。

最佳答案

您可能在以下行中有错字:

HtmlAttribute src = img.Attributes["@src"];

我让这个为我工作(注意@位置):

HtmlAttribute src = img.Attributes[@"src"];

关于c# - HTMLAgilityPack SelectNodes 选择所有 <img> 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7883449/

相关文章:

c# - 将日期转换为毫秒

c# - 如何在服务器上验证客户端证书?

C# 特殊字符的正则表达式是什么

c# - 自适应卡片中的轮播

c# - TCP/IP 套接字端口监听

c# - 如何使用 http 而不是 https 获取 youtube 视频的 html 源

javascript - 在没有内联事件的情况下调用 javascript 函数

c# - CSS 不适用于电子邮件正文

regex - grep 或 sed 用于包含字符串的单词

Python Regex 将评论拆分为数据框