나는 영화에 대한 간단한 clojure 프로젝트에서 일하고 있습니다. 그래서 특정 웹 사이트에서 검색 결과를 구문 분석하려고합니다. 제 경우에는 imdb.com입니다. 확실하지 않은 나는이 올바른 경로에있어 그래서 누군가가 나를 도울 수 있기를 바랍니다.웹 사이트에서 검색 결과를 구문 분석, 컴파일/clojure
홈페이지는 영화 제목을 입력하고 "검색"버튼을 제출할 텍스트 입력란으로 아주 간단 해 보일 것입니다. 나는 최대한으로 deatailed 수하려고합니다 :
(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.이 내가 사용했던 기능을 다음과 같습니다 :
1.이 메인 페이지입니다
(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]))
]))
(defroutes main-routes
(GET "/" []
(view-input))
(POST "/" [categories a]
(view-output2 categories a))
:
3.And이 내가보기 출력 및 뷰 출력 2 기능을 사용하고 같은 클래스에서 GET/POST 부분입니다 여기
(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")]))
5.And
지도 다루는 다른 클래스에 정의 된 마지막 함수입니다 :(defn mapper-gen4
[names images] (sort-by :name (map #(hash-map
:name %1 :image %2) names images)))
나는 그것이 알고 4.Also, 이들은 이전의 사람들이 사용하고있는 기능은 다음과 같습니다 이 방법으로 누군가가 문제가있는 곳을 볼 수 있지만, 지금까지 검색 결과 페이지에는 결과도 오류도 표시되지 않고 h2 검색 결과 제목이있는 빈 페이지 만 표시됩니다. 미리 감사드립니다!
[최소 완전하고 검증 가능한 예제를 만드는 방법] (http://stackoverflow.com/help/mcve)을 참조하십시오. 현재 서면으로,이 질문은 잠재적 인 응답자로부터 너무 많은 투자가 필요합니다. –