¿Alguien sabe si es posible buscar en Google mediante programación y cómo, especialmente si hay una API de Java para ello?
105
¿Alguien sabe si es posible buscar en Google mediante programación y cómo, especialmente si hay una API de Java para ello?
Respuestas:
Algunos hechos:
Google ofrece una API de servicio web de búsqueda pública que devuelve JSON : http://ajax.googleapis.com/ajax/services/search/web . Documentación aquí
Java ofrece
java.net.URL
yjava.net.URLConnection
para disparar y manejar solicitudes HTTP.JSON se puede convertir en Java en un objeto Javabean de pleno valor utilizando una API JSON de Java arbitraria. Uno de los mejores es Google Gson .
Ahora haz los cálculos:
Con esta clase Javabean que representa los datos JSON más importantes que devuelve Google (en realidad, devuelve más datos, pero depende de usted como ejercicio expandir este código Javabean en consecuencia):
Ver también:
java.net.URLConnection
Actualización desde noviembre de 2010 (2 meses después de la respuesta anterior), el servicio web de búsqueda pública ha quedado obsoleto (y el último día en el que se ofreció el servicio fue el 29 de septiembre de 2014). Su mejor opción ahora es consultar http://www.google.com/search. directamente junto con un agente de usuario honesto y luego analizar el resultado con un analizador HTML . Si omite el agente de usuario, obtendrá un 403. Si está mintiendo en el agente de usuario y simula un navegador web (por ejemplo, Chrome o Firefox), obtendrá una respuesta HTML mucho mayor, lo que es una pérdida de ancho de banda y rendimiento.
Aquí hay un ejemplo inicial usando Jsoup como analizador HTML:
fuente
Para buscar en Google usando la API, debe usar la Búsqueda personalizada de Google , no se permite raspar la página web
En java, puede utilizar la biblioteca cliente de la API CustomSearch para Java
La dependencia de maven es:
Ejemplo de búsqueda de código con la biblioteca cliente de la API de búsqueda personalizada de Google
Como puede ver, deberá solicitar una clave de API y configurar una identificación de motor de búsqueda propia, cx .
Actualmente (fecha de respuesta) recibe 100 llamadas api por día de forma gratuita, luego a Google le gusta compartir sus ganancias.
fuente
En las Condiciones de servicio de google podemos leer:
5.3 Usted acepta no acceder (o intentar acceder) a ninguno de los Servicios por ningún medio que no sea a través de la interfaz proporcionada por Google, a menos que se le haya permitido específicamente hacerlo en un acuerdo separado con Google. Usted acepta específicamente no acceder (o intentar acceder) a ninguno de los Servicios a través de ningún medio automatizado (incluido el uso de scripts o rastreadores web) y debe asegurarse de cumplir con las instrucciones establecidas en cualquier archivo robots.txt presente en los Servicios. .
Así que supongo que la respuesta es No. Más sobre la API de SOAP ya no está disponible
fuente
Google TOS se relajó un poco en abril de 2014. Ahora dice:
"No haga un mal uso de nuestros Servicios. Por ejemplo, no interfiera con nuestros Servicios ni intente acceder a ellos utilizando un método que no sea la interfaz y las instrucciones que proporcionamos".
Así que el pasaje sobre "medios automatizados" y scripts ya no está. Evidentemente, todavía no es la forma deseada (por Google) de acceder a sus servicios, pero creo que ahora está formalmente abierta a la interpretación de qué es exactamente una "interfaz" y si hace alguna diferencia en cuanto a cómo se procesa exactamente el HTML devuelto ( renderizado o analizado). De todos modos, he escrito una biblioteca de conveniencia de Java y depende de usted decidir si usarla o no:
https://github.com/afedulov/google-web-search
fuente
De hecho, existe una API para buscar en Google mediante programación. La API se denomina búsqueda personalizada de Google. Para utilizar esta API, necesitará una clave de API de desarrollador de Google y una clave cx. En mi blog se explica un procedimiento sencillo para acceder a la búsqueda de Google desde el programa Java.
Ahora muerto, aquí está el enlace de Wayback Machine .
fuente
Como alternativa a la respuesta de BalusC, ya que ha quedado en desuso y debe usar proxies, puede usar este paquete. Muestra de código:
Biblioteca en GitHub
fuente
A la luz de esas alteraciones de TOS el año pasado, creamos una API que da acceso a la búsqueda de Google. Era solo para nuestro propio uso, pero después de algunas solicitudes decidimos abrirlo. ¡Estamos planeando agregar motores de búsqueda adicionales en el futuro!
Si alguien busca una manera fácil de implementar / adquirir resultados de búsqueda, puede registrarse y probar la API REST: https://searchapi.io
Devuelve resultados JSON y debería ser bastante fácil de implementar con los documentos detallados.
Es una pena que Bing y Yahoo estén muy por delante de Google en este sentido. Sus API no son baratas, pero al menos están disponibles.
fuente
Solo una alternativa. La búsqueda en Google y el análisis de los resultados también se pueden hacer de forma genérica utilizando cualquier analizador HTML como Jsoup en Java. A continuación se muestra el enlace al ejemplo mencionado.
https://www.codeforeach.com/java/example-how-to-search-google-using-java
fuente