Pesquisa no Google frase e retorna os resultados

Olá a todos :slight_smile: Tenho um program em java que pesquisa uma frase introduzida pelo utilizador e retorna os resultados.

Queria criar um site que utilize essa ferramenta para outro fim, mas só a tenho criada em java.

É possivel passar o seguinte codigo para uma pagina web utilizando html e javascript?

Já pesquisei bastante mas não consegui encontrar nada!

Obrigado :slight_smile:

public static List<Pair> searchGoogle(String searchQuery) throws IOException {
        
        List<Pair> result = new ArrayList<>();
    
    // lets get the top results counting to nearly 15
        String request = "https://www.google.com/search?q=" + searchQuery + "&num=45elton ";
        
        org.jsoup.nodes.Document doc = Jsoup.connect(request)        
        .userAgent("Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)").get();
      
    // get the required content from response . Here ( h3 a ) is the selector
    // pattern for selecting all heading links
    
    //  System.out.println( "--> \n" + doc.toString() );
        
        Elements links = doc.select(".kCrYT");
    
        for (Element link : links) {
            Elements el_a = link.select("a");
     
            String hrefValue = el_a.attr("href");    
            Elements el_divs = el_a.select("div");
      
            String nome = "";
            if(el_divs.size() > 0) {
                nome = el_divs.get(0).html();
            }
       
            if (hrefValue.startsWith("/url?q=")) {
          
                try {
             
                    String slink = extractLink(hrefValue);
            
                    if( slink != null ) {             

                    hrefValue = URLDecoder.decode(slink, StandardCharsets.UTF_8.toString());
            
                    Pair pair = new Pair(nome, hrefValue );
            
                    result.add( pair );
               
                    }
             
                } catch (UnsupportedEncodingException ex) {
                    throw new RuntimeException(ex.getCause());
                } catch(java.lang.IndexOutOfBoundsException ie) {
                    ie.printStackTrace();
             
                }
          
            }
        }

        return result;
    }

  // extract required titulosResultados from href value
    private static String extractLink(String href) {
        
        String result = null;
        Matcher m = p.matcher(href);

        if (m.find()) {
            result = m.group();
        }

        return result;

    }

Basta fazer uma requisição pro serviço de busca do google e parsear o resultado.

Não tenho certeza se o google disponibiliza uma API bonitinha para fazer buscas de forma gratuita. Eles geralmente cobram por esse tipo de serviço. Contudo, nada te impede de fazer uma requisição e interpretar o HTML.

Vou fazer diferente!

Vou chamar uma classe Java pelo JavaScript para fazer isso.

Obrigado :grinning:

Cara, da onde você tira essas ideias malucas.

Como faço então?!

Dizes-me como não devo fazer mas ainda não me deste nenhuma forma ou método para o desenvolver!

O que voce já fez em Java pode ser executado no back-end (usando por exemplo Spring Boot). No browser via js você só trata as requisições via ajax a sua aplicação Java no backend http.

1 curtida

Se quer mesmo fazer na ponta com Front End.
Para resolver seu problema, aprenda a usa DOM e tambem jquery.
Isso que você quer fazer em JavaScript é bem facil, mas precisa aprender.

Mas nesse caso especifico penso que em BACK End ficará melhor, mas tem que pensar num servidor pra atender a demanda.

1 curtida

De toda a pesquisa que eu fiz deu a entender que não era possível pesquisar no Google e retomar os resultados.
Mas esse eu vou aprender então!
Mas não percebi a sua primeira frase

Como o @javaflex disse, da uma olhada no Spring Boot.

Aprende a criar um serviço e chame esse serviço através de uma chamada ajax, com a função fetch do JS ou biblioteca axios.

Nesse serviço que vai estar feito em java (utilizando Spring), você coloca o seu código feito em jsoup

1 curtida

Vou fazer isso! Obrigado :slight_smile:

Olá :slight_smile: Tudo bem?

Cosegues-me dizer algum local ou curso que me pode ajudar a aprender spring boot?

Obrigado :slight_smile:

Se você gosta de vídeo-aula, tem na udemy.

Se quer ficar bom em Spring, a Algaworks tem um ótimo curso.

Se não quer pagar, ai tem o Youtube