我有html内容,我将其存储为XML文档(使用HTML Agility Pack)。我知道一些XPath,但我无法将其归结为我需要的确切内容。
在下面的示例中,我尝试从大图像中提取“src”和“alt”文本。这是我的例子:
<html>
<body>
....
<div id="large_image_display">
<img class="photo" src="images/KC0763_l.jpg" alt="Circles t-shirt - Navy" />
</div>
....
<div id="small_image_display">
<img class="photo" src="images/KC0763_s.jpg" alt="Circles t-shirt - Navy" />
</div>
</body>
</html>
获得“images / KC0763_l.jpg”和“Circles T-shirt - Navy”的XPath是什么?这是我走了多远,但这是错误的。目前主要是伪代码:
\\div[@class='large_image_display']\img[1][@class='photo']@src
\\div[@class='large_image_display']\img[1][@class='photo']@alt
非常感谢任何帮助您做到这一点。
答案 0 :(得分:1)
以下xpath将引导您进入img标记的src属性:
'//html/body/div/img[@class="photo"]/@src'
同样地,这将使您进入alt属性:
'//html/body/div/img[@class="photo"]/@alt'
从那里你可以到达属性文本。如果你只想找到那些匹配'large_image_display'的那个,那么你会进一步过滤它:
'//html/body/div[@id="large_image_display"]/img[@class="photo"]/@src'
答案 1 :(得分:1)
使用以下XPath表达式:
/html/body/div[@id='large_image_display']/img/@src
和
/html/body/div[@id='large_image_display']/img/@alt
始终尽量避免使用 //
缩写,因为这可能导致评估效率非常低(导致整个(子)树被扫描)
在这种特殊情况下,我们知道html
元素是文档的顶部元素,我们只需按/html
选择它 - 而不是//html
。
您的主要问题在您的表达式中,您使用的是\
和\\
,并且XPath中没有此类运算符。您尝试使用的正确XPath运算符是/
和//
缩写。