gpt4 book ai didi

clojure - Clojure 中的 URL 检查器?

转载 作者:行者123 更新时间:2023-12-04 06:47:12 24 4
gpt4 key购买 nike

我有一个在 Perl 中使用的 URL 检查器。我想知道如何在 Clojure 中完成这样的事情。我有一个包含数千个 URL 的文件,我希望输出文件包含 URL(减去 http://、https://)和一个简单的 :1 表示有效,:0 表示错误。理想情况下,考虑到这是 Clojure 的优势之一,我可以同时检查每个站点。

输入

http://www.google.com
http://www.cnn.com
http://www.msnbc.com
http://www.abadurlisnotgood.com

输出

www.google.com:1
www.cnn.com:1
www.msnbc.com:1
www.abadurlisnotgood.com:0

最佳答案

我假设“有效 URL”是指 HTTP 响应 200。这可能有效。它需要 clojure-contrib。将 map 更改为 pmap 以尝试使其平行,如 Arthur Ulfeldt 提到的那样。

(use '(clojure.contrib duck-streams
java-utils
str-utils))

(import '(java.net URL
URLConnection
HttpURLConnection
UnknownHostException))

(defn check-url [url]
(str (re-sub #"^(?i)http:/+" "" url)
":"
(try
(let [c (cast HttpURLConnection
(.openConnection (URL. url)))]
(if (= 200 (.getResponseCode c))
1
0))
(catch UnknownHostException _
0))))

(defn check-urls-from-file [filename]
(doseq [line (map check-url
(read-lines (as-file filename)))]
(println line)))

以您的示例作为输入:

user> (check-urls-from-file "urls.txt")
www.google.com:1
www.cnn.com:1
www.msnbc.com:1
www.abadurlisnotgood.com:0

关于clojure - Clojure 中的 URL 检查器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1257282/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com