Alguém sabe se e como é possível pesquisar no Google de forma programática - especialmente se houver uma API Java para isso?
105
Alguém sabe se e como é possível pesquisar no Google de forma programática - especialmente se houver uma API Java para isso?
Respostas:
Alguns fatos:
O Google oferece uma API de serviço da web de pesquisa pública que retorna JSON : http://ajax.googleapis.com/ajax/services/search/web . Documentação aqui
Java oferece
java.net.URL
ejava.net.URLConnection
para disparar e manipular solicitações HTTP.JSON pode ser convertido em Java em um objeto Javabean completo usando uma API JSON Java arbitrária. Um dos melhores é o Google Gson .
Agora faça as contas:
Com esta classe Javabean representando os dados JSON mais importantes conforme retornados pelo Google (ela realmente retorna mais dados, mas é deixada para você como um exercício para expandir este código Javabean de acordo):
Veja também:
java.net.URLConnection
Atualização desde novembro de 2010 (2 meses após a resposta acima), o serviço da web de busca pública tornou-se obsoleto (e o último dia em que o serviço foi oferecido foi 29 de setembro de 2014). Agora, sua melhor aposta é consultar http://www.google.com/search diretamente com um agente de usuário honesto e, em seguida, analisar o resultado usando um analisador de HTML . Se você omitir o agente do usuário, receberá um 403 de volta. Se você está mentindo no agente do usuário e simula um navegador da web (por exemplo, Chrome ou Firefox), você obtém uma resposta HTML muito maior, o que é um desperdício de largura de banda e desempenho.
Aqui está um exemplo inicial usando Jsoup como analisador de HTML:
fonte
Para pesquisar no google usando a API, você deve usar a Pesquisa personalizada do Google , não é permitido copiar páginas da web
Em java, você pode usar a biblioteca cliente da API CustomSearch para Java
A dependência maven é:
Exemplo de pesquisa de código usando a biblioteca cliente da API CustomSearch do Google
Como você pode ver, você precisará solicitar uma chave de API e configurar um ID de mecanismo de pesquisa próprio, cx .
Atualmente (data da resposta) você recebe 100 chamadas de API por dia de graça, então o Google gostaria de compartilhar seu lucro.
fonte
Nos Termos de Serviço do google podemos ler:
5.3 Você concorda em não acessar (ou tentar acessar) qualquer um dos Serviços por qualquer meio que não seja a interface fornecida pelo Google, a menos que tenha sido especificamente autorizado a fazê-lo em um contrato separado com o Google. Você concorda especificamente em não acessar (ou tentar acessar) qualquer um dos Serviços por meio de qualquer meio automatizado (incluindo o uso de scripts ou rastreadores da web) e deve garantir que cumpre as instruções estabelecidas em qualquer arquivo robots.txt presente nos Serviços .
Então, acho que a resposta é Não. Mais sobre a API SOAP não está mais disponível
fonte
O TOS do Google foi relaxado um pouco em abril de 2014. Agora ele afirma:
"Não faça uso indevido de nossos serviços. Por exemplo, não interfira em nossos serviços ou tente acessá-los usando um método diferente da interface e das instruções que fornecemos."
Portanto, a passagem sobre "meios automatizados" e scripts acabou. Evidentemente, ainda não é a forma desejada (pelo Google) de acessar seus serviços, mas acho que agora está formalmente aberta à interpretação do que é exatamente uma "interface" e se faz alguma diferença em como exatamente o HTML retornado é processado ( renderizado ou analisado). De qualquer forma, escrevi uma biblioteca de conveniência Java e cabe a você decidir se vai usá-la ou não:
https://github.com/afedulov/google-web-search
fonte
Na verdade, existe uma API para pesquisar no google de forma programática. A API é chamada de pesquisa personalizada do Google. Para usar esta API, você precisará de uma chave de API de desenvolvedor do Google e uma chave cx. Um procedimento simples para acessar a pesquisa do Google a partir do programa java é explicado no meu blog.
Agora morto, aqui está o link da Wayback Machine .
fonte
Como alternativa à resposta BalusC, uma vez que ela se tornou obsoleta e você deve usar proxies, você pode usar este pacote. Amostra de código:
Biblioteca no GitHub
fonte
À luz dessas alterações do TOS no ano passado, construímos uma API que dá acesso à pesquisa do Google. Era apenas para nosso próprio uso, mas após alguns pedidos, decidimos abri-lo. Estamos planejando adicionar outros mecanismos de pesquisa no futuro!
Se alguém estiver procurando uma maneira fácil de implementar / adquirir resultados de pesquisa, você está livre para se inscrever e experimentar a API REST: https://searchapi.io
Ele retorna resultados JSON e deve ser fácil de implementar com os documentos detalhados.
É uma pena que o Bing e o Yahoo estejam quilômetros à frente do Google nesse aspecto. Suas APIs não são baratas, mas pelo menos estão disponíveis.
fonte
Apenas uma alternativa. Pesquisar no google e analisar os resultados também pode ser feito de uma forma genérica usando qualquer analisador de HTML, como Jsoup em Java. A seguir está o link para o exemplo mencionado.
https://www.codeforeach.com/java/example-how-to-search-google-using-java
fonte