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