【问题标题】:Need help with XPATH for src value of a specific Html img tag [closed]需要 XPATH 帮助以获取特定 Html img 标签的 src 值 [关闭]
【发布时间】:2011-04-10 23:05:37
【问题描述】:

我对 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,而不仅仅是让这个查询工作。

【问题讨论】:

  • 你的编程怎么样? Javascript 在浏览器中运行?还有什么?
  • @bmargulies 抱歉,我使用的是 C# 和 HTML Agility Pack。
  • 好问题,+1。请参阅我的答案以获取一个完整、简短且简单的单行 XPath 表达式,该表达式准确地选择所需的属性。 :)

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


【解决方案1】:

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

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;

【讨论】:

  • 再次感谢哥们!尝试在短时间内了解 xcap 有点挑战性,但您的帮助使我朝着正确的方向前进,我非常感谢。
【解决方案2】:

使用

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

这会选择任何名为 img 的元素的任何名为 src 的属性,该元素是 td 的子元素,tr 的子元素是 tbody 的子元素,tbody 的子元素文档中的任何table,其具有值为“tickerStats”的id 属性。

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

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

【讨论】:

  • 非常感谢您的详细回复。非常感谢您抽出宝贵时间来写这篇文章。
猜你喜欢
  • 1970-01-01
  • 2016-05-14
  • 2022-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-05
  • 1970-01-01
相关资源
最近更新 更多