使用enlive解析html的片段

8
为什么以下代码片段无法正常工作?
(html/select (:body (client/post "http://www.web.onpe.gob.pe/modElecciones/elecciones/elecciones2011/2davuelta/onpe/presidente/extras/provincias.php" {:form-params {"elegido" "010000"}})) [:option])

我需要将html字符串转换为clojure数据结构吗,或者需要进行其他操作吗?

1个回答

9

是的 - 你可以使用 html/html-snippet 将原始的 html 字符串转换为 enlive 可以使用的内容, 或者使用 html/html-resource 来使用整个 html 文件。

尝试以下操作:

(html/select 
  (html/html-snippet 
    (:body (client/post "<your-website>" {:form-params {"elegido" "010000"}})) 
  [:option])

当我试图使用html-snippet解析响应时,我遇到了一个arity异常https://gist.github.com/PuercoPop/2035343d5af8e0ecfb1d。这是一个ajax请求,所以它不是完整的html,有问题吗? - PuercoPop
顺便说一下,响应非常简短,是一个选项列表:https://gist.github.com/PuercoPop/d80b05a0fc6afd5b8a39 - PuercoPop
1
有趣。当我使用 (select (html-snippet <option-list>) [:option]) 解析您的选项列表时,我得到了 ({:tag :option, :attrs {:value ""}, :content ("--seleccionar--")} {:tag :option, :attrs {:value "010100"}, :content ("CHACHAPOYAS")} {:tag :option, :attrs {:value "010200"}, :content ("BAGUA")} ...) 我正在使用 enlive 1.1.1... - Daniel Neal
我发现了我的错误,我应该使用HTML片段而不是代码片段! - PuercoPop

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接