我对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,而不仅仅是让这个查询起作用。
答案 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内容。