Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
(Java)以链接的形式获取google的前n个结果_Java_Api_Google Search - Fatal编程技术网

(Java)以链接的形式获取google的前n个结果

(Java)以链接的形式获取google的前n个结果,java,api,google-search,Java,Api,Google Search,首先,我寻找类似的问题,但我找不到我需要的答案。所以,请原谅,如果这个问题不是唯一的和新的 我想通过链接获得google的前N个(可能是5个或10个)结果。 目前我有这样的想法: String url="http://www.google.com/search?q="; String charset="UTF-8"; String key="java"; String query = String.format("%s",URLEncoder.encode(key, charset)); URL

首先,我寻找类似的问题,但我找不到我需要的答案。所以,请原谅,如果这个问题不是唯一的和新的

我想通过链接获得google的前N个(可能是5个或10个)结果。 目前我有这样的想法:

String url="http://www.google.com/search?q=";
String charset="UTF-8";
String key="java";
String query = String.format("%s",URLEncoder.encode(key, charset));
URLConnection con = new URL(url+ query).openConnection();
//next line is to trick Google who is blocking the default UserAgent
con.setRequestProperty("User-Agent", "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null)
    System.out.println(inputLine);
in.close();
这给了我这个搜索的完整谷歌html代码,但我只想得到前n个结果的原始链接。我该怎么办


提前感谢。

我已经做了一些html调查,您必须在字符串中搜索:

<h3 class="r"><a href="/url?q=
您可能需要尝试使用该库,因为它需要花费大量精力来解析网页:

Elements links = Jsoup.connect("https://www.google.com.au/search?q=fred")
    .get().select("h3.r").select("a");
for (Element link : links)
    System.out.println(link);
Elements
扩展了
ArrayList
,因此您可以通过以下方式访问前n个元素:

for (int i = 0; i < n; i++)
    System.out.println(links.get(i));
如果只需要原始url:

link.attr("href")
因此,将所有这些放在一起,下面将打印google搜索“fred”一词的前5个原始链接:


尝试在html中搜索“href”,它应该表示以下链接。有一些很好的解析解决方案,但您可能还想阅读有关讨论不推荐的搜索API和违反谷歌服务条款的评论线程。
links.stream().limit(n)...
link.attr("href")
Jsoup.connect("https://www.google.com.au/search?q=fred").get()
    .select("h3.r").select("a")
    .stream()
    .limit(5)
    .map(l -> l.attr("href"))
    .forEach(System.out::println);