Java 使用clojure enlive处理URL的响应代码:403

Java 使用clojure enlive处理URL的响应代码:403,java,http,clojure,http-status-code-403,enlive,Java,Http,Clojure,Http Status Code 403,Enlive,我试图使用enlive的html资源功能来抓取网页内容,但我得到的响应是403,因为我不是来自浏览器。我想这可以用Java(找到答案)覆盖,但我希望看到一种clojure方法来处理这个问题。也许这可以通过向html资源函数提供参数来实现,但我还没有遇到一个关于如何以及需要作为参数传递什么的示例。如有任何建议,将不胜感激 谢谢。Enlive的html资源不提供覆盖默认请求属性的方法。您可以像找到的另一个答案一样,自己打开连接,并将结果InputStream传递到html资源 类似于以下的操作可以处

我试图使用enlive的html资源功能来抓取网页内容,但我得到的响应是403,因为我不是来自浏览器。我想这可以用Java(找到答案)覆盖,但我希望看到一种clojure方法来处理这个问题。也许这可以通过向html资源函数提供参数来实现,但我还没有遇到一个关于如何以及需要作为参数传递什么的示例。如有任何建议,将不胜感激


谢谢。

Enlive的
html资源
不提供覆盖默认请求属性的方法。您可以像找到的另一个答案一样,自己打开连接,并将结果
InputStream
传递到
html资源

类似于以下的操作可以处理此问题:

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

不过,将其拆分为自己的功能可能会更好。

正确地说,您需要像clj http或http kit这样的东西,它允许您控制连接,您可以在其中提供一些设置、获取响应和提要(html资源)。html资源是一种多方法,您可以将URL对象传递给它。这是一个很好的点,您可以设置“用户代理”到您的URL连接对象。感谢您的回复,我将尝试一下。