【发布时间】:2016-08-19 04:08:20
【问题描述】:
我做了一个小应用程序,我必须根据关键字检索 URL。 这是代码:
Elements doc = Jsoup
.connect(request)
.userAgent(
"Mozilla 5.0 (Windows NT 6.1)")
.timeout(5000).get().select("li.g>h3>a");
for (Element link : doc) {
String url = link.absUrl("href");
try {
url = URLDecoder.decode(url.substring(url.indexOf('=') + 1, url.indexOf('&')), "UTF-8");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(!url.startsWith("http"))
continue; // Ads/news/etc.
else if(url.contains("/pdf/"))
continue;
else if(url.contains("//github.com/"))
continue;
res.add(url);
}
只是得到以下错误:
org.jsoup.HttpStatusException: HTTP error fetching URL. Status=503, URL=http://ipv4.google.com/sorry/IndexRedirect?continue=http://www.google.com/search%3Flr%3Dlang_en....
at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:435)
at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:446)
at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:410)
at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:164)
at org.jsoup.helper.HttpConnection.get(HttpConnection.java:153)
at sperimentazioni.Main.getDataFromGoogle(Main.java:327)
at sperimentazioni.Main.getURLs(Main.java:164)
at sperimentazioni.Main.main(Main.java:485)
明明是验证码google,怎么绕过?
【问题讨论】:
-
这就是验证码存在的原因。阻止像您的代码这样的非人类。我认为没有人会帮助你解决它......
-
可以使用其他搜索引擎吗?如果有,是哪一个?
-
我猜所有人都会在一定程度上做到这一点。虽然抓取可能不是解决这个问题的方法。你会想要使用他们的官方 API。必应可以工作:bing.com/developers/s/APIBasics.html