首页 文章

如何在LibXml 2中使用Xpath

提问于
浏览
2

在这个address我正试图刮一个tage(这是大胆的红色的Larg价格)

我使用LIBXML 2.2

当我尝试通过此XPATH提取标签时

// * [@ class ='priceLarge']

有用!

但为了使查询更容易,我想在Firefox上使用FireBug .

使用FireBug它给了我这个XPath

/ html / body / div [2] / form / table [3] / tbody / tr / td / div / table / tbody / tr [2] / td [2] / span / b

使用这个Xpath它不起作用,似乎这个不提供完整的查询 . 我该怎么修改这个XPath来刮掉这个项目?

1 回答

  • 2

    Firefox和其他浏览器在HTML中生成 tbody 标记 .

    实际上, tbody 可能不存在,因此您可以在XPath中删除它 . ( /html/body/div[2]/form/table[3]/tr/td/div/table/tr[2]/td[2]/span/b )您只需从应用程序中保存HTML并在文本编辑器中查看即可对此进行测试 .

    由于似乎意图是从网页中提取信息,但是如果您使用XPath较少依赖于树结构(即 //b[@class='priceLarge'] ),则您的应用程序可能更能抵抗网页中的更改 .

    EDIT :似乎除了 tbody 问题之外,Firefox正在将 div (ID:divsinglecolumnminwidth)元素呈现为包含 form 元素(ID:handleBuy) .

    使用XML编辑器查看html显示 form 元素是该 div 元素的兄弟,因此表达式应以 /html/body/form/table[3] 开头 .

    测试XPath表达式的一个工具是HAP Testbed .

相关问题