Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby clojure中的屏幕刮削_Ruby_Clojure_Screen Scraping_Nokogiri - Fatal编程技术网

Ruby clojure中的屏幕刮削

Ruby clojure中的屏幕刮削,ruby,clojure,screen-scraping,nokogiri,Ruby,Clojure,Screen Scraping,Nokogiri,我用谷歌搜索了一下,但找不到满意的答案。所以这个问题是相关的,但有点老,而且和我想要的正好相反:一种使用XPath而不是CSS选择器进行屏幕抓取的方法 我使用enlive进行一些基本的屏幕抓取,但有时需要XPath选择器的功能。这就是: clojure(java)是否有与Nokogiri或lxml等价的版本?“纯java Nokogiri”的状态是什么?有没有办法使用clojure的图书馆?有比这更好的选择吗?这里有几种可能性 其中一些要求使用半格式良好的XML。如果没有,我将与生成XML(使用

我用谷歌搜索了一下,但找不到满意的答案。所以这个问题是相关的,但有点老,而且和我想要的正好相反:一种使用XPath而不是CSS选择器进行屏幕抓取的方法

我使用enlive进行一些基本的屏幕抓取,但有时需要XPath选择器的功能。这就是:


clojure(java)是否有与Nokogiri或lxml等价的版本?“纯java Nokogiri”的状态是什么?有没有办法使用clojure的图书馆?有比这更好的选择吗?

这里有几种可能性

其中一些要求使用半格式良好的XML。如果没有,我将与生成XML(使用clj标记soup进行解析,它生成一个表单,该表单会打嗝并写出XML)并使用它

首先,只需使用本机JDK功能。假设文档的格式足够好,请尝试使用它,它为本机JDK解析提供了一个包装器

如果这还不够,考虑采用一种基于CuljuleDebug结构的路由。一个更简单的路径可以只使用TagSoup的输出以及映射、过滤器和NTH的组合

如果你需要更高级的东西,请考虑使用拉链来提供数据周围的结构,使操作更容易。使用

clojure.xml/parse
clojure.zip/xml-zip
生成拉链,然后从那里开始。有关示例,请访问

对于任何复杂的事情,使用本机结构是我的首选方法,因为您可以充分利用语言的力量


如果您提供了一个为什么需要XPath的示例,我可以提供一些示例代码。

请查看为什么不使用JVM附带的XPath库?使用Clojure比使用纯Java容易得多。没有什么复杂的,只是从HTML中爬行和提取值。但是,在XPath中容易完成的一些事情是使用CSS选择器的痛苦,因此Enlive无法完成。希望cljtagsoup+hiccup+cljxpath会成功。