使用jsoup获取谷歌搜索结果时出现403错误

时间:2013-01-22 20:31:46

标签: java jsoup http-status-code-403

我正在尝试使用以下代码获取Google搜索结果:

Document doc = con.connect("http://www.google.com/search?q=lakshman").timeout(5000).get();

但我得到了这个例外:

org.jsoup.HttpStatusException: HTTP error fetching URL. Status=403,URL=http://www.google.com/search?q=lakshman

403错误意味着服务器禁止访问,但我可以在网络浏览器中加载此URL。为什么Jsoup会收到403错误?

6 个答案:

答案 0 :(得分:30)

您只需将UserAgent属性添加到HTTP标头,如下所示:

Jsoup.connect(itemUrl)
     .userAgent("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36")
     .get()

答案 1 :(得分:6)

Google不允许机器人,你不能使用jsoup来连接谷歌。 您可以使用Google Web Search API (Deprecated),但每天可能会提出的请求数量有限。

答案 2 :(得分:2)

实际上,您只需添加用户代理

就可以避免403错误
doc = Jsoup.connect(url).timeout(timeout)
                    .userAgent("Mozilla")

但我认为这违反了谷歌的政策。

编辑:Google比您想象的更快地捕获机器人。但是,您可以将其用作临时解决方案。

答案 3 :(得分:1)

替换声明

Document doc =con.connect("http://www.google.com/search?q=lakshman").timeout(5000).get();

带声明

Document doc=Jsoup.connect("http://www.google.com/search?q=lakshman").userAgent("Chrome").get();

答案 4 :(得分:1)

试试这个:

Document doc =con.connect("http://www.google.com/search?q=lakshman").ignoreHttpErrors(true).timeout(5000).get();

如果userAgent无法正常工作,就像它对我一样。

答案 5 :(得分:0)

在某些情况下,您需要设置引荐来源。它对我有帮助。

完整来源here

HomeController