2016-09-20 2 views
0

Я ссылаюсь на ответ, чтобы проанализировать результат поиска Google.Анализ результатов поиска Google Ошибка

How can you search Google Programmatically Java API

Однако, когда я пытаюсь код .error происходит.

Как мне внести изменения?

import java.net.URLDecoder; 
import java.net.URLEncoder; 

import org.jsoup.Jsoup; 
import org.jsoup.nodes.Element; 
import org.jsoup.select.Elements ; 

public class JavaApplication22 { 
public static void main(String[] args) { 
    String google = "http://www.google.com/search?q="; 
    String search = "stackoverflow"; 
    String charset = "UTF-8"; 
    String userAgent = "ExampleBot 1.0 (+http://example.com/bot)"; // Change this to your company's name and bot homepage! 

    Elements links = Jsoup.connect(google + URLEncoder.encode(search, charset)).userAgent(userAgent).get().select(".g>.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); 
    } 
} 

} 

Я думаю, это потому, что библиотеки имеют значение. Но я пробовал ctrl +shift+i. Он показывает, что ничего не исправлять в операторах импорта.

Ошибка

Exception in thread "main" java.lang.RuntimeException: Uncompilable 
source code - unreported exception java.io.IOException; must be caught 
or declared to be thrown at 
javaapplication22.JavaApplication22.main(JavaApplication22.java:32) 

Как следует изменить код, чтобы я мог разобрать результат поиска Google?

+0

Поставив этот код в класс? –

+0

@Samuel Kok Да, я просто поместил весь код в один класс – evabb

+0

Я не вижу никакого класса в вашем коде выше. Просто основной метод –

ответ

1

Пожалуйста, замените ваш главный класс с ниже код:

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

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

    String search = "stackoverflow"; 

    String charset = "UTF-8"; 

    String userAgent = "ExampleBot 1.0 (+http://example.com/bot)"; // Change this to your company's name and bot homepage! 

    Elements links = Jsoup.connect(google + URLEncoder.encode(search, charset)).userAgent(userAgent).get().select(".g>.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); 
    } 
} 
+0

Должен ли я внести изменения в 'String userAgent =" ExampleBot 1.0 (+ http: //example.com/bot) "; // Измените это на имя вашей компании и домашнюю страницу bot! ' – evabb

+0

, если я запускаю непосредственно код« Исключение в потоке »main« java.net.SocketTimeoutException: connect timed out »показывает – evabb

+0

нет, просто не добавьте эту строку« throws UnsupportedEncodingException, IOException "после:" public static void main (String [] args) " –