Google的自定义搜索,就像手动搜索一样

时间:2018-10-04 13:19:58

标签: java api google-custom-search

我想使用Google的自定义搜索Api通过Java在网络上搜索歌曲歌词。 为了获得当前正在播放的歌曲的名称和艺术家,我使用了Tesseract OCR。即使OCR完美运行,我也常常无法获得任何结果。
但是,当我手动尝试时:在网络浏览器中打开Goog​​le并搜索相同的字符串,然后它可以正常工作。 所以现在我真的不知道手动搜索引擎和api调用之间有什么区别。
我必须在Api请求中添加一些参数吗?

//The String searchString is what I am searching for, so the song name and artist 
String searchUrl = "https://www.googleapis.com/customsearch/v1?key=(myKEY)=de&cx=(myID)&q=" + searchString + "lyrics";    
String data = getData(searchUrl);

JSONObject json = new JSONObject(data);
String link = "";
try
{
   link = json.getJSONArray("items").getJSONObject(0).getString("link");
   URI url = new URI(link);
   System.out.println(link);            
   Desktop.getDesktop().browse(url);
}
catch(Exception e)
{
   System.out.println("No Results");
}

private static String getData(String _urlLink) throws IOException
{   
    StringBuilder result = new StringBuilder();     
    URL url = new URL(_urlLink);
    URLConnection conn = url.openConnection();
    BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
    String line;
    while((line = rd.readLine()) != null)
    {
        result.append(line);
    }
    rd.close();
    return result.toString();       

}

1 个答案:

答案 0 :(得分:0)

尝试在&cx 之前删除 = de ,并使用+来表示单词之间的间隔。像这样-
https://www.googleapis.com/customsearch/v1?key=(yourKEY)&cx=(yourID)&q=paradise+coldplay+lyrics