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

时间:2013-09-08 12:15:33

标签: java http clojure http-status-code-403 enlive

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

感谢。

1 个答案:

答案 0 :(得分:6)

Enlive的html-resource没有提供覆盖默认请求属性的方法。您可以像找到的其他答案一样,自行打开连接,并将生成的InputStream传递给html-resource

以下内容会处理它:

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

尽管如此,它可能会更好地分解为自己的功能。