如何使用clojure enlive稀疏没有自己的独占容器的Web结果元素?

时间:2013-08-27 13:27:20

标签: clojure enlive

我正在尝试使用Enlive解析事件列表。

通常,每个事件数据都在特定div(此处为“result”)

中隔离
<div class="result">
  <h3>Event 1 title</h3>
  <a href="http://the_site.com/event1">Event 1 page</a>
  <p>Event 1 location</p>
</div>
<div class="result">
  <h3>Event 2 title</h3>
  <a href="http://the_site.com/event2">Event 2 page</a>
  <p>Event 2 location</p>
</div>

所以我创建了一个变量,它具有每个事件站点的所有解析逻辑:

(def parsing-config 
  {:source "The Site"
   :results-url ["http://the_site.com"]
   :parsing {
     :title {:selector [[div.result] [:h3]]
             :trim-fn (comp first :content)}
     :url {:selector [[div.result] [:a]]
           :trim-fn (:href (:attrs %))}
     :location {:selector [[div.result] [:p]]
                :trim-fn (comp first :content)}}
    {:source "Other event site"
     ...}})

但对于特定网站,我的div包含多个事件,如下所示:

<div class="September">
  <h3>Event 1 title</h3>
  <a href="http://other_site.com/event1">Event 1 page</a>
  <p>Event 1 location</p>
  <h3>Event 2 title</h3>
  <a href="http://other_site.com/event2">Event 2 page</a>
  <p>Event 2 location</p>
</div>
<div class="October">
  <h3>Event 3 title</h3>
  <a href="http://other_site.com/event3">Event 3 page</a>
  <p>Event 3 location</p>
  <h3>Event 4 title</h3>
  <a href="http://other_site.com/event4">Event 4 page</a>
  <p>Event 4 location</p>
</div>

如何解析最后一个站点的每个事件,同时只更改parsing-config变量而不是我用来解析的函数(这里没有显示......)?

感谢。

注意::trim-fn功能可能不准确。

0 个答案:

没有答案