0

有没有一种方法可以独立于 XML 文档来确定来自 xpath 的返回值的类型?具体来说,我使用的是 lxml。

例子:

  • //a并将//b[a/@href]始终返回零个或多个元素的列表。
  • //a/text()并将//a/@href始终返回零个或多个字符串的列表。

虽然我可以想出各种尝试分析这些的方法,但感觉就像是在尝试重新发明轮子。有没有更好的方法来做到这一点?

背景

当事实证明没有任何a标签并且我已经编写了root.xpath('//a')[0]. 而且我不想盲目地抓住一切。所以我写了一组函数,它们总是返回正确类型的东西。和替换工作得很好,但如果不知道输出应该是什么,cssselectorattrib就无法满足输出的期望。xpath

如果你真的在乎,这是我的代码。https://scraperwiki.com/editor/raw/irked

4

1 回答 1

0

假设您的 XPath 表达式 like//b[a/@href]是静态的,则将始终返回相同的类型。(在这种情况下是元素列表。)您只想知道列表是否为空。一个简单的if语句可以做到这一点:

results = document.xpath('//b[a/@href]')
if results:
    do_something(results[0]
else:
    no_result()
于 2012-08-02T08:55:14.443 回答