0
有没有一种方法可以独立于XML文档来确定xpath返回值的类型?具体来说,我使用lxml。确定查询的xpath输出的类型(节点,字符串)
例子:
//a
和//b[a/@href]
总是会返回零个或多个元素的列表。//a/text()
和//a/@href
将始终返回零个或多个字符串的列表。
虽然我可以想出各种尝试分析这些方法的方法,但感觉就像试图重新发明轮子。有没有更好的方法来做到这一点?
背景
我很无聊,要赶上例外事实证明时,有没有任何a
标签和我写root.xpath('//a')[0]
。我不想一味地抓住一切。所以我写了一组总是返回正确类型的函数。 cssselector
和attrib
替代品工作得很好,但我不能满足xpath
输出的期望,而不知道输出应该是什么。
如果你真的在意,这是我的代码。 https://scraperwiki.com/editor/raw/irked
如果您不想捕获异常,请存储从xpath返回的列表并检查长度。或者使用正确的XPath获取第一个元素:'root.xpath('// a [1]')' – 2012-08-01 16:55:43
实际上,所有四个表达式都会返回节点列表。元素节点为前两个,文本节点为第三个,属性节点为第四个。 – 2012-08-01 22:24:24