在没有 ajax 的情况下以编程方式搜索 google

Searching google programmatically without ajax

显然 google 淘汰了我在 java 中为 android 使用的 ajax api,我挖掘了他们的新 API 页面,但我找不到任何似乎可以在 java 或任何非网络语言中使用的内容。

这是我之前的:

@Override
protected String doInBackground(String... query) {
    try {
        BufferedReader reader = new BufferedReader(new InputStreamReader(new URL("http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=" + URLEncoder.encode(query[0], "UTF-8")).openStream()));
        StringBuilder sb = new StringBuilder();
        String line = null;
        while ((line = reader.readLine()) != null) {
            sb.append(line).append("\n");
        }
        reader.close();

        return sb.toString();
    }
    catch(Exception e){e.printStackTrace();
        return "failed to do anything";
    }
}

简而言之,提供了一个字符串,并将其附加到 ajax 搜索中。结果以 JSON 形式处理到字符串生成器中,然后作为整个字符串返回。

如果您现在尝试这样做,returns结果如下:

{"responseData": null, "responseDetails": "The Google Web Search API is no longer available. Please migrate to the Google Custom Search API (https://developers.google.com/custom-search/)", "responseStatus": 403}

同样,我已经阅读了自定义搜索 API 但没有找到任何可以在 java 脚本之外工作的内容。

我更喜欢 JSON 解决方案,因为这是我已经在使用的解决方案,但我可以使用我得到的任何东西。

那么,有没有其他方法可以让我使用类似的方法?还是我会被迫进入另一个搜索引擎?

//编辑

好的,我现在有了固定的代码。但是它需要一个 API 密钥,我不能在我的开源项目中发布它,而且除非我付费,否则它的搜索量有限,所以我将被迫去找竞争对手。 这是任何感兴趣的人的固定代码:

@Override
protected String doInBackground(String... query) {
    try {
        String APIKey = "INSERT_YOUR_API_KEY";
        String customSearchEngine = "INSERT_YOUR_CUSTOM_SEARCH_KEY";
        BufferedReader reader = new BufferedReader(new InputStreamReader(new URL("https://www.googleapis.com/customsearch/v1?key=" + APIKey + "&cx=" + customSearchEngine + "&q=" + URLEncoder.encode(query[0], "UTF-8")).openStream()));
        StringBuilder sb = new StringBuilder();
        String line = null;
        while ((line = reader.readLine()) != null) {
            sb.append(line).append("\n");
        }
        reader.close();

        return sb.toString();
    }
    catch(Exception e){e.printStackTrace();
        return "failed to do anything";
    }
}

他们在那个网站上提到 JSON API here

它是一个 REST api。 Google for "Java REST client" 从 Java

获取一些关于如何使用它的示例