需要有关XPATH的帮助,以获取特定Html img标记的src值

时间:2011-04-10 23:05:38

标签: c# parsing xpath html-agility-pack

我对XPATH有点新,并了解大部分基础知识,但我在使用特定查询时遇到了一些麻烦。

我正在尝试解析一个Motley Fool页面并返回图像的来源以获得股票的大写分数。

例如:如果您查看页面的来源:http://caps.fool.com/Ticker/SLT.aspx我想要http://g.foolcdn.com/art/ratings/stars/trans/5stars-trans-lg.png的来源

我只想要src =后面的内容。如果可能的话。

我目前正在处理:

xpath = "//div[@class='subtle marginT']"
然而,这没有任何回报。我知道它可能会提出很多要求,但如果您想回答,我也非常感谢您快速推理答案,因为我想学习XCAP,而不仅仅是让这个查询起作用。

3 个答案:

答案 0 :(得分:6)

根据您的网址,这对我有用:

var imageNode = doc.DocumentNode.SelectSingleNode("//table[@id='tickerStats']/tbody/tr/td/img");
string imageText = imageNode.Attributes["src"].Value;

基本上只是抓住具有id的最近元素,然后将树向下移动到你想要的位置。

或者这也可以工作并且看起来更清晰(因为只要只有一个图像,你就不会真正关心表格中的DOM结构):

var statsNode = doc.DocumentNode.SelectSingleNode("//table[@id='tickerStats']");
var imageNode = statsNode.SelectSingleNode(".//img");
string imageText = imageNode.Attributes["src"].Value;

答案 1 :(得分:2)

使用

//table[@id='tickerStats']/tbody/tr/td/img/@src

这会选择名为src的任何属性{@ 1}}的任何属性,该属性是img的子级,td的子级是tr的子级。 tbody这是文档中任何table的子项,其id属性值为'tickerStats'。

如果只需要此属性的字符串值(假设上述XPath表达式选择单个属性节点),请使用:

string(//table[@id='tickerStats']/tbody/tr/td/img/@src)

答案 2 :(得分:1)

这里有一个名为XPath Builder的免费工具http://www.bubasoft.net/可以帮助您快速找出XPath内容。