处理响应代码:403,用于具有clojure enlive的URL

Мit*_*tke 2 java http clojure http-status-code-403 enlive

我正在尝试使用enlive的html-resource函数来抓取网页的内容,但我得到了响应403,因为我不是来自浏览器.我想这可以在Java中覆盖(在这里找到答案),但我会喜欢看一种处理这个问题的clojure方法.也许这可以通过为html-resource函数提供参数来实现,但我没有遇到过如何以及需要作为参数传递的示例.任何建议将不胜感激.

谢谢.

Jar*_*314 6

Enlive html-resource没有提供覆盖默认请求属性的方法.您可以像找到的其他答案一样,自己打开连接并将结果传递InputStreamhtml-resource.

像下面这样的东西会处理它:

(with-open [inputstream (-> (java.net.URL. "http://www.example.com/")
                            .openConnection
                            (doto (.setRequestProperty "User-Agent"
                                                       "Mozilla/5.0 ..."))
                            .getContent)]
  (html-resource inputstream))
Run Code Online (Sandbox Code Playgroud)

虽然,它可能看起来更好地分成它自己的功能.