一段時間以來,我一直在爲一個簡單的clojure電影項目工作,所以我試圖解析來自特定網站的搜索結果,在我的情況下是imdb.com。不知道如果我在這條正確的道路上,所以我希望有人能幫助我。從網站解析搜索結果,compojure/clojure
首頁看起來很簡單,用文本字段輸入電影名稱並提交名爲「搜索」的按鈕。我會嘗試將盡可能多的deatailed地:
1.本是主要的頁面:
(defn view-input []
(view-layout
[:h2 "Find your Movie"]
[:body {:style "font: 14pt/16pt helvetica; background-color: #F2FB78; padding-top:100px; text-align: center" }
(form-to [:post "/"]
[:br]
[:br]
(text-field {:placeholder "Enter movie name" } :a) [:br]
(submit-button "Search")
)]
))
2.這些是我一直在使用的功能:
(defn create-flick-url [a]
(str "http://www.imdb.com/search/title?title=" a "&title_type=feature"
))
(defn flick-vec [categories a]
(vec (let [flick-url (create-flick-url a)
flick-names (print-flick-name-content flick-url)]
(mapper-gen4 flick-names
(get-image-content flick-url)
))))
(defn view-output2 [categories a]
(view-layout
[:h2 "Search results"]
[:form {:method "post" :action "/"}
(interleave
(for [flick (flick-vec categories a)]
(label :title (:name flick)))
(for [flick-name (flick-vec categories a)]
[:br])
(for [flick-image (flick-vec categories a)]
[:img {:src (:image flick-image)}])
(for [flick (flick-vec categories a)]
[:br]))
]))
3.And這是在同一個類,其中我使用的視圖輸出和視圖OUTPUT2函數的GET/POST部分:
(defroutes main-routes
(GET "/" []
(view-input))
(POST "/" [categories a]
(view-output2 categories a))
4.Also,這些都是以前的使用功能:
(defn print-flick-name-content
[url]
(vec (flatten (map :content (h3+table url)))))
(defn get-image-content
[url]
(vec (flatten (map #(re-find #"http.*jpg" %)
(map :style (map :attrs (h3+table2 url)))))))
(defn get-page
"Gets the html page from passed url"
[url]
(html/html-resource (java.net.URL. url)))
(defn h3+table
"Return seq of <h3> and table tags, where content of the <h3> tag meet defined condition"
[url]
(html/select (get-page url)
[:td (html/attr= :class "title") :h3 :a]))
(defn h3+table2
"Return seq of <h3> and table tags, where content of the <h3> tag meet defined condition"
[url]
(html/select (get-page url)
[:td (html/attr= :class "image")]))
這裏即指否極泰來的最後一個,功能另一類地圖交易中定義:
(defn mapper-gen4
[names images] (sort-by :name (map #(hash-map
:name %1 :image %2) names images)))
我知道這是一個但這樣,有人會看到問題出在哪裏,到目前爲止,搜索結果頁面顯示沒有結果,也沒有錯誤,只有帶有h2搜索結果標題的空白頁面。提前致謝!
請參閱[如何創建最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)。按照目前的寫法,這個問題需要潛在的回答者太多的投資。 – 2014-09-01 15:30:22