如何在LibXml 2中使用Xpath

时间:2012-01-03 04:19:16

标签: xpath xquery libxml2

在这个address我试图刮掉一个标签(即大胆红色的Larg价格)

我使用LIBXML 2.2

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

  

// * [@类= 'priceLarge']

它有效!

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

使用FireBug它给了我这个XPath

  

/ HTML /体/格[2] /形式/表[3] / tbody的/ TR / TD / DIV /表/ tbody的/ TR [2] / TD [2] /跨度/ B

使用这个Xpath它不起作用,似乎这个没有提供完整的查询。我怎样才能修改这个XPath来刮掉这个项目?

1 个答案:

答案 0 :(得分: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']),您的应用程序可能会更加抵制网页中的更改。

编辑:似乎除tbody问题外,Firefox正在将div(ID:divsinglecolumnminwidth)元素呈现为包含 form元素(ID:handleBuy)。

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

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