一些刮掉的谷歌搜索结果重复

时间:2017-04-30 02:53:39

标签: java web-scraping web-crawler jsoup google-search

我想在2016年抓取panda的Google新闻结果

据该网站称,2016年新闻结果约为500个。

我尝试使用下面的代码来抓取每个结果标题和网址。

然而,许多代码都存在很多问题。有些结果标题是重复的,它会在120左右的结果中停止。此外,"&tbs=cdr%3A1%2Ccd_min%3A1%2F1%2F2016%2Ccd_max%3A12%2F31%2F2016";无效。仅在2016年无法过滤结果。

我在浏览器中检查了string谷歌搜索网址应该是正确的。

我不知道我的代码有什么问题。

    public static void main(String[] args) throws UnsupportedEncodingException, IOException {

              String[] line = new String[10000];
          final int[] score = {    0};


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

            String search = "panda";

            String charset = "UTF-8";

            String news="&tbm=nws";

      String string = google + URLEncoder.encode(search , charset) + news+"&num=100"+"&tbs=cdr%3A1%2Ccd_min%3A1%2F1%2F2016%2Ccd_max%3A12%2F31%2F2016";
    // 100 results in every pages & results in 2016

      System.out.println(string);
         String userAgent ="Chrome/57.0.2987.133"; 
         int numberOfResultpages = 500; // 

        int idx  =0;
        int count =0;
    for (int i = 0; i < numberOfResultpages; i++){
   {
           Document document = Jsoup.connect(string).userAgent(userAgent).timeout(5000) .data("start",""+i).get();
        Elements links = document.select( ".r>a");

            for (Element link : links) {
    System.out.println(count++);
                String title = link.text();
                String url = link.absUrl("href"); // Google returns URLs in format "http://www.google.com/url?q=<url>&sa=U&ei=<someKey>".
                url = URLDecoder.decode(url.substring(url.indexOf('=') + 1, url.indexOf('&')), "UTF-8");

                if (!url.startsWith("http")) {
                    continue; // Ads/news/etc.
                }
                System.out.println("Title: " + title);
                System.out.println("URL: " + url);

                line[idx++]=title; // store every result titles into index[]
           // }

    }
         }

0 个答案:

没有答案