如何使用谷歌搜索刮取每个页面的每个结果?

时间:2017-04-29 17:37:29

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

我将通过谷歌搜索在每个页面中搜索每个结果。 我将搜索时间范围限制为:2016年1月1日至2016年12月31日

 String string = google + URLEncoder.encode(search , charset) + news+"&tbs=cdr%3A1%2Ccd_min%3A1%2F1%2F2016%2Ccd_max%3A12%2F31%2F2016";

我发现这没有用。

我正在使用JSoup。

现在,我成功地抓取了特定页数的每个结果。numberOfResultpages

但我想在google可以找到的每个页面中搜索每个结果(不在特定页数内)

这是我的工作。

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

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


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

        String search = "stackoverflow";

        String charset = "UTF-8";

        String news="&tbm=nws";



String string = google + URLEncoder.encode(search , charset) + news+"&tbs=cdr%3A1%2Ccd_min%3A1%2F1%2F2016%2Ccd_max%3A12%2F31%2F2016";

     int numberOfResultpages = 10; // >==grabs specific number of pages only

    int idx = 0;
for (int i = 0; i < numberOfResultpages; i++) {

       Document document = Jsoup.connect(string).userAgent(userAgent) .data("start",""+i).get();
    Elements links = document.select( ".r>a");

        for (Element link : links) {

            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;
       // }

}
     }

0 个答案:

没有答案