如何在特定日期范围内解析Google搜索结果?

时间:2017-01-23 13:52:38

标签: java search jsoup google-search google-custom-search

要仅在日期范围内设置搜索结果,有两种方法:

1)使用谷歌搜索运算符添加谷歌搜索关键字

&安培;

2)对网址建模(添加后缀)。

在我的Java应用程序中,我想通过JSOUP在特定的日期范围内搜索谷歌新闻搜索结果(链接和标题),如2016

然而,我尝试了这3种方法,其中没有一种是成功的(包含非2016年的结果)。即使我厌倦了谷歌搜索框(google网站)中的这3种方法或添加了网址后缀,他们也不能发现2016年的结果。

如何解决这个问题?

添加Google搜索关键字:

  

字符串搜索=" stackoverflow日期范围:2016-01-01..2016-12-31"

     

字符串搜索=" stackoverflow日期范围:2457389-2457735"

添加网址:

  

+"&安培; TBS = CDR%3A1%2Ccd_min%3A1%2F1%2F2016%2Ccd_max%3A12%2F31%2F2016"

代码:

       String google = "http://www.google.com/search?q=";

        String search = "stackoverflow daterange:2016-01-01..2016-12-31 "; //using the google search operators (daterange)

        String charset = "UTF-8";

        String news="&tbm=nws";

        String string = google + URLEncoder.encode(search , charset) + news;

        String userAgent = "ExampleBot 1.0 (+http://example.com/bot)"; 

        System.setProperty("http.proxyHost", "192.168.5.1");
        System.setProperty("http.proxyPort", "1080");
        for(int j=0;j<3;j++){
     Document document = Jsoup.connect(string+"&start="+(j+0)*10).userAgent(userAgent). ignoreHttpErrors(true).followRedirects(true).timeout(100000).ignoreContentType(true).get();
    Elements links = document.select( ".r>a");
....}

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,结果证明这是JSoup的1.10.2版本中的一个错误。转到https://jsoup.org/download并抓住1.10.3,它应该修复它。 this guy所有回答我问题的信用。