我已经使用了一些基本的屏幕抓取活动,但有时候需要XPath选择器的强大功能。所以这就是:
对于clojure(java),有没有相当于Nokogiri或lxml的内容? “纯java Nokogiri”的状态是什么?有什么方法可以使用clojure中的库?比this hack更好的替代方案?
答案 0 :(得分:3)
这里有几种可能性。
其中一些需要半良好的XML才能工作。如果你没有它,我会将clj-tagsoup与hiccup配对以产生XML(用clj-tag-soup解析,产生一个打嗝并写成XML的形式)并使用这一点。
首先,只使用本机JDK功能。假设文档已经足够好,请尝试使用clj-xpath,它提供了本机JDK解析的包装。
如果这还不够,可以考虑采用更多基于Clojure数据结构的路由。更简单的路径可以使用TagSoup的输出以及地图,过滤器和nth的组合。
如果您需要更高级的东西,请考虑使用拉链来提供数据周围的结构,使其更易于操作。使用clojure.xml/parse
和clojure.zip/xml-zip
生成拉链,然后从那里开始。可以在http://techbehindtech.com/2010/06/25/parsing-xml-in-clojure/找到一个示例。
对于任何复杂的事情,使用本机结构是我的首选路径,因为您可以充分利用该语言的全部功能。
如果您提供了需要XPath的原因示例,我可以提供一些示例代码。