在这个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 回答
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 .