2

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

谢谢。

4

1 回答 1

6

Enlivehtml-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))

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

于 2013-09-09T07:48:42.753 回答