无法获取 img 标签内容
Not able to get img tag content
我正在使用 HtmlAgilityPack
,我正在尝试获取这两个图像标签中的内容:
<div style="padding-left: 27px;">
<img src="http://s1.swimg.net/gsmf/578/img/events/appearance.png" width="13" height="13" alt="Presenze" title="Presenze"> 6
<img src="http://s1.swimg.net/gsmf/578/img/events/G.png" width="13" height="13" alt="Goal" title="Goal"> 0
</div>
如何查看每个 img 标签未关闭,我正在尝试使用此代码获取 6
和 0
:
Convert.ToInt32(div.SelectSingleNode(".//img[0]").InnerText.Trim())
div
变量包含上面的 html。问题是我在这段代码上得到 null
:(div.SelectSingleNode(".//img[0]")
.
可能是因为标签没有关闭,事实上我在 div
变量中只看到一个包含所有 img 标签的项目。
我该如何解决这个问题?
你得到 null
主要是因为 XPath 索引从 1 开始, 而不是 0。但是,目标文本被认为是 img
的兄弟而不是content/inner 文本。
也就是说,您可以使用 following-sibling::text()
并将结果限制为 1,以获得 img
元素之后最近的文本节点。例如,要获取第一个 img
元素之后的文本,您可以使用以下 XPath:
//img[1]/following-sibling::text()[1]
完成演示:
var raw = @"<div style=""padding-left: 27px;"">
<img src=""http://s1.swimg.net/gsmf/578/img/events/appearance.png"" width=""13"" height=""13"" alt=""Presenze"" title=""Presenze""> 6
<img src=""http://s1.swimg.net/gsmf/578/img/events/G.png"" width=""13"" height=""13"" alt=""Goal"" title=""Goal""> 0
</div>";
var document = new HtmlAgilityPack.HtmlDocument();
document.LoadHtml(raw);
var query = "//img[1]/following-sibling::text()[1]";
var txt = document.DocumentNode.SelectSingleNode(query);
Console.WriteLine(Convert.ToInt32(txt.InnerText.Trim()));
输出:
6
我正在使用 HtmlAgilityPack
,我正在尝试获取这两个图像标签中的内容:
<div style="padding-left: 27px;">
<img src="http://s1.swimg.net/gsmf/578/img/events/appearance.png" width="13" height="13" alt="Presenze" title="Presenze"> 6
<img src="http://s1.swimg.net/gsmf/578/img/events/G.png" width="13" height="13" alt="Goal" title="Goal"> 0
</div>
如何查看每个 img 标签未关闭,我正在尝试使用此代码获取 6
和 0
:
Convert.ToInt32(div.SelectSingleNode(".//img[0]").InnerText.Trim())
div
变量包含上面的 html。问题是我在这段代码上得到 null
:(div.SelectSingleNode(".//img[0]")
.
可能是因为标签没有关闭,事实上我在 div
变量中只看到一个包含所有 img 标签的项目。
我该如何解决这个问题?
你得到 null
主要是因为 XPath 索引从 1 开始, 而不是 0。但是,目标文本被认为是 img
的兄弟而不是content/inner 文本。
也就是说,您可以使用 following-sibling::text()
并将结果限制为 1,以获得 img
元素之后最近的文本节点。例如,要获取第一个 img
元素之后的文本,您可以使用以下 XPath:
//img[1]/following-sibling::text()[1]
完成演示:
var raw = @"<div style=""padding-left: 27px;"">
<img src=""http://s1.swimg.net/gsmf/578/img/events/appearance.png"" width=""13"" height=""13"" alt=""Presenze"" title=""Presenze""> 6
<img src=""http://s1.swimg.net/gsmf/578/img/events/G.png"" width=""13"" height=""13"" alt=""Goal"" title=""Goal""> 0
</div>";
var document = new HtmlAgilityPack.HtmlDocument();
document.LoadHtml(raw);
var query = "//img[1]/following-sibling::text()[1]";
var txt = document.DocumentNode.SelectSingleNode(query);
Console.WriteLine(Convert.ToInt32(txt.InnerText.Trim()));
输出:
6