我一直在尝试使用XPath,我是新手,我做了一个解析器,它会从其中一个节点的元素中提取text()。
我写了下面的
xhtml = etree.HTML(i.get('content').encode('utf8'))
result = etree.tostring(xhtml, pretty_print=True, method="html")
root = html.fromstring(result)
print root.xpath('//td[contains(text(), "Shipment Total:")]/following-sibling::td/b/text()')
以上是返回
[' $25.79 ']
有没有办法,只使用XPath修剪空格并仅返回数字以逃避美元符号?我在XPath中读到了关于fn :: match但我无法弄明白。任何人都可以帮忙吗?
答案 0 :(得分:2)
print root.xpath('substring-after(normalize-space(//td[contains(text(), "Shipment Total:")]/following-sibling::td/b/text()), "$")')
应该这样做。
对于更复杂的提取,您可能不得不诉诸fn:replace
。但请注意,这需要一个支持xpath 2.0的处理器。