如何从谷歌URL中找到搜索词

时间:2016-01-06 06:00:12

标签: java url google-search

我在谷歌搜索一个字(休息电话)。我有三个网址用于单个搜索。

  1. 在omni框中搜索(我们点击网址的浏览器输入框)显示如下URL。(我的默认搜索引擎是Google)

    https://www.google.co.in/search?q=rest+call+in+java&ie=utf-8&oe=utf-8&gws_rd=cr&ei=BaaMVoLbHIKEuwT_oIQI
    
  2. 从Google主页搜索显示如下网址。

    https://www.google.co.in/?gws_rd=ssl#q=rest%20call%20in%20java
    
  3. 从Google搜索,但这次我点击Google中已显示的结果页面中的Google徽标(已转到https://www.google.co.in/webhp?hl=en),在此google页面搜索后,它显示如下URL,

    https://www.google.co.in/webhp?hl=en#hl=en-IN&q=rest+call+in+java
    
  4. 以上三个网址都显示相同查询文字的结果相同,但有三个不同的网址。

    我想获得在Google文本框中搜索过的单词。如何从Java获得这个词。

    我知道如果我们使用String regex,我们可以得到,但是同一搜索有三种类型的URL。

1 个答案:

答案 0 :(得分:0)

所有网址都使用相同的模式来指定搜索的字词,它位于String.indexOf查询字符串下。您可以使用 //this is the url, it can be any of the 3 variants String s = "https://www.google.co.in/search?q=rest+call+in+java&ie=utf-8&oe=utf-8&gws_rd=cr&ei=BaaMVoLbHIKEuwT_oIQI"; //find the beginning of the searched term int i = s.indexOf("q="); //find the end of the searched term int j = s.indexOf("&", i); j = j == -1 ? s.length() : j; //extract the searched term and decode String q = URLDecoder.decode(s.substring(i + 2, j)); 方法并操纵此模式来获取搜索的术语。

regex

正如您所提到的,另一种方法是使用regex。您不必为单独的网址使用单独的regex。单 //this is the url, it can be any of the 3 variants String s = "https://www.google.co.in/search?q=rest+call+in+java&ie=utf-8&oe=utf-8&gws_rd=cr&ei=BaaMVoLbHIKEuwT_oIQI"; //prepare the regex Pattern pattern = Pattern.compile("q=(.*?)(?:&|$)"); Matcher matcher = pattern.matcher(s); //extract and decode String q = matcher.find() ? URLDecoder.decode(matcher.group(1)) : ""; 就可以了。

{{1}}