Cómo hacer web scrape de los resultados de Google Maps Place

Andrei Ogiolan el 20 abr 2023

blog-image

Introducción

Google Maps es uno de los servicios de mapas y navegación más utilizados del mundo, que proporciona a los usuarios una forma sencilla de encontrar y explorar lugares, empresas y puntos de interés. Una de las principales características de Google Maps es la posibilidad de buscar lugares y ver información detallada sobre ellos, como su ubicación, reseñas, fotos y mucho más.

La extracción de estos datos de Google Maps puede ser útil para diversos fines. Por ejemplo, las empresas pueden utilizar estos datos para rastrear y analizar el rendimiento de sus locales, los investigadores para estudiar patrones de comportamiento de los consumidores y los particulares para encontrar y explorar nuevos lugares.

El propósito de este artículo es proporcionar una guía paso a paso sobre cómo scrapear resultados de lugares de Google Maps con nuestra API usando Node.js. Cubriremos todos los aspectos, desde la configuración del entorno de desarrollo hasta la extracción de datos relevantes y la descripción de posibles problemas. Al final de este artículo, dispondrás de los conocimientos y las herramientas que necesitas para raspar los resultados de Google Maps por tu cuenta.

¿Por qué deberías utilizar un rascador profesional en lugar de construir el tuyo?

Utilizar un scraper profesional puede ser una mejor opción que crear uno propio por varias razones. En primer lugar, los scraper profesionales están diseñados para manejar una amplia variedad de tareas de scraping y están optimizados para el rendimiento, la fiabilidad y la escalabilidad. Están diseñados para manejar grandes cantidades de datos y pueden manejar varios tipos de sitios web y tecnologías web. Esto significa que los raspadores profesionales a menudo pueden extraer datos con mayor rapidez y precisión que un raspador personalizado.

Además, los raspadores profesionales suelen venir con funciones integradas como la resolución de CAPTCHA, la rotación de IP y la gestión de errores, que pueden hacer que el proceso de raspado sea más eficiente y menos propenso a errores. También ofrecen soporte y documentación que puede ser útil cuando se enfrenta a cualquier problema.

Otro aspecto importante es que los proveedores de scrapers profesionales cumplen las políticas de scraping de los sitios web que scrapean y pueden proporcionar un uso legal de los datos, lo que es importante tener en cuenta a la hora de scrapear datos.

Por último, en nuestro caso concreto, para raspar los resultados de lugares de Google Maps, es necesario pasar un parámetro de datos a la URL de Google de la siguiente manera :

https://www.google.com/maps/place/Waldo+Pizza/@43.821489,-43.4299553,3z/data=!4m5!3m4!1s0x87c0ef253b04093f:0xafdfd6dc1d3a2b4e!8m2!3d38.9930011!4d-94.5936805

El parámetro de datos suele tener este aspecto: !4m5!3m4!1s + data_id + !8m2!3 + latitud + !4d + longitud. Sé que esto puede sonar intimidante al principio, ya que puede que no tengas ni idea de cómo obtener la propiedad data_id para un lugar específico y tienes razón porque Google oculta esta información y no es visible en la página cuando estás buscando un lugar en Google Maps. Pero, afortunadamente, usar un scraper profesional como el nuestro se encarga de eso encontrando estos datos por ti. Hablaremos en las secciones posteriores sobre cómo obtener el data_id, las coordenadas y cómo construir fácilmente el parámetro de datos.

Definir nuestro objetivo

¿Qué son los resultados de Google Maps Place?

Los resultados de lugares de Google Maps son los resultados que se muestran cuando un usuario busca un lugar en Google Maps. Estos resultados pueden incluir lugares como empresas, restaurantes, hoteles, monumentos y otros puntos de interés. Cada resultado de lugar incluye información como el nombre del lugar, la dirección, el número de teléfono, el sitio web, opiniones y fotos. Los resultados de lugares también incluyen una imagen de Google Maps Street View del lugar, y un mapa que muestra la ubicación del lugar. Los resultados de lugares también pueden incluir un enlace a la página de Google My Business del lugar.

Cuando un usuario busca un lugar en Google Maps, se le presenta una lista de resultados de lugares que coinciden con su consulta de búsqueda. Estos resultados se muestran en el mapa y en forma de lista, y pueden filtrarse por varios criterios, como la valoración, el precio y la distancia.

La extracción de estos datos puede ser útil para las empresas que quieren seguir y analizar el rendimiento de sus locales, los investigadores que quieren estudiar patrones de comportamiento de los consumidores y los particulares que quieren encontrar y explorar nuevos lugares.

¿Cómo es nuestro objetivo?

blog-image

Puesta en marcha

Antes de que podamos empezar a raspar los resultados de Google Maps, tenemos que asegurarnos de que tenemos las herramientas necesarias a nuestra disposición. Lo primero que necesitaremos es Node.js, un tiempo de ejecución de JavaScript que nos permite ejecutar JavaScript en el lado del servidor que se puede instalar desde su sitio web oficial. La segunda cosa que necesitas tener es una API KEY, que puedes conseguir fácilmente creando una cuenta aquí y activando el servicio SERP.

Una vez que tengas estas cosas configuradas, para ejecutar un script Node.js, sólo necesitas crear un archivo js. Puedes lograrlo ejecutando el siguiente comando:

$ touch scraper.js 

Y ahora pegue la siguiente línea en su archivo:

console.log("¡Hola Mundo!")

Y ejecute el siguiente comando:

$ node scraper.js

Si ahora puedes ver el mensaje "Hello World!" impreso en el terminal significa que has instalado Node.js con éxito y estás listo para proceder al último paso.

Ahora el último paso es obtener la información data_id sobre el lugar que te interesa. Este es el momento en el que nuestra API entra en juego. Utilizarla es muy sencillo y no requiere instalar ninguna librería externa.

En primer lugar, en un archivo js necesitas importar el módulo incorporado `https` de Node.js para poder enviar peticiones a nuestra API. Esto se puede hacer de la siguiente manera:

const https = require("https");

En segundo lugar, debe especificar su clave API, un término de búsqueda y las coordenadas del lugar que le interesa:

const API_KEY = "<YOUR-API-KEY-HERE>" // You can get by creating an account - https://app.webscrapingapi.com/register

const query = "Waldo%20Pizza"

const coords = "@38.99313451901278,-94.59368586441806"

Ahora, lo que tienes que hacer es pasar esta información en un objeto de opciones para que nuestra API entienda de qué lugar necesitas obtener información:

const options = {

"method": "GET",

"hostname": "serpapi.webscrapingapi.com",

"port": null,

"path": `/v1?engine=google_maps&api_key=${API_KEY}&type=search&q=${query}&ll=${coords}`,

"headers": {}

};

A continuación, debe configurar una llamada a nuestra API con toda esta información:

const req = https.request(options, function (res) {

const chunks = [];

res.on("data", function (chunk) {

chunks.push(chunk);

});

res.on("end", function () {

const body = Buffer.concat(chunks);

const response = JSON.parse(body.toString());

const data_id = response.place_results.data_id;

if (data_id) {

console.log(data_id);

}

else {

console.log('We could not find a data_id property for your query. Please try using another query')

}

});

});

req.end();

Por último, sólo tienes que ejecutar el script que has construido y esperar los resultados:

$ node scraper.js

Y deberías obtener de vuelta la propiedad data_id impresa en la pantalla:

$ ​​0x87c0ef253b04093f:0xafdfd6dc1d3a2b4es

Y eso es todo, en este punto tienes todo lo que necesitas para crear el parámetro de datos y estás listo para pasar a la siguiente sección que contiene el propósito de este artículo.

Empecemos a rastrear los resultados de Google Place

Ahora que ya tienes tu entorno configurado, estás listo para empezar a scrapear los resultados de lugares de Google Maps con Node.js. Como ya se ha mencionado anteriormente, con el fin de raspar los resultados de Google Maps lugar ahora tiene que configurar el parámetro de datos. Teniendo todo disponible por ahora, puedes lograrlo de la siguiente manera:

const data_id = "0x87c0ef253b04093f:0xafdfd6dc1d3a2b4e" // el data_id que recuperamos anteriormente

const latitude = '38.99313451901278'

const longitude = '-94.59368586441806'

const data = '!4m5!3m4!1s' + data_id + '!8m2!3d' + latitude + '!4d' + longitude

Ahora, debe modificar su objeto options para indicar a nuestra API que está buscando resultados sobre lugares. Con este nuevo parámetro de datos, nuestra API sabrá exactamente de qué lugar necesita obtener información:

const options = {

"method": "GET",

"hostname": "serpapi.webscrapingapi.com",

"port": null,

"path": `/v1?engine=google_maps&api_key=${API_KEY}&type=place&data=${data}`, // this time the type is place and there is no query needed

"headers": {}

};

El script resultante debería tener este aspecto :

const https = require("https");

const API_KEY = "<YOUR-API-KEY-HERE>" // You can get by creating an account - https://app.webscrapingapi.com/register

const data_id = "0x87c0ef253b04093f:0xafdfd6dc1d3a2b4e" // the data_id we retrieved earlier

const latitude = '38.99313451901278'

const longitude = '-94.59368586441806'

const data = '!4m5!3m4!1s' + data_id + '!8m2!3d' + latitude + '!4d' + longitude

const options = {

"method": "GET",

"hostname": "serpapi.webscrapingapi.com",

"port": null,

"path": `/v1?engine=google_maps&api_key=${API_KEY}&type=place&data=${data}`, // this time the type is place and there is no query needed

"headers": {}

};

const req = https.request(options, function (res) {

const chunks = [];

res.on("data", function (chunk) {

chunks.push(chunk);

});

res.on("end", function () {

const body = Buffer.concat(chunks);

const response = JSON.parse(body.toString());

console.log(response)

});

});

req.end();

Y después de ejecutar este script, deberías obtener una respuesta parecida a esta:

place_results: {

title: 'Waldo Pizza',

data_id: '0x89c259a61c75684f:0x79d31adb123348d2',

place_id: 'ChIJT2h1HKZZwokR0kgzEtsa03k',

data_cid: '8778389626880739538',

website: 'https://www.stumptowntogo.com/',

gps_coordinates: { latitude: 38.99313451901278, longitude: -94.59368586 },

reviews_link: 'https://serpapi.webscrapingapi.com/v1?engine=google_maps_reviews&data_id=0x89c259a61c75684f:0x79d31adb123348d2',

place_id_search: 'https://serpapi.webscrapingapi.com/v1?engine=google_maps&type=place&device=desktop&data=!4m5!3m4!1s0x89c259a61c75684f:0x79d31adb123348d2!8m2!3d38.99313451901278!4d-94.59368586',

thumbnail: 'https://lh5.googleusercontent.com/p/AF1QipNtnPBJ2Oi_C2YNamHTXyqU9I8mRBarCIvM5g5v=w408-h272-k-no',

rating: 4.6,

reviews: 2594,

price: '$$',

type: [ 'Pizza restaurant' ],

service_options: { dine_in: true, curbsidepickup: true, no_contactdelivery: true },

extensions: [

[Object], [Object],

[Object], [Object],

[Object], [Object],

[Object], [Object],

[Object], [Object]

],

open_state: 'Closed',

hours: [

[Object], [Object],

[Object], [Object],

[Object], [Object],

[Object]

],

contact_details: {

address: [Object],

action_1: [Object],

menu: [Object],

phone: [Object],

plus_code: [Object]

},

address: '7433 Broadway St, Kansas City, MO 64114',

images: [

[Object], [Object],

[Object], [Object],

[Object], [Object],

[Object], [Object],

[Object], [Object],

[Object], [Object]

],

people_also_search_for: [ [Object], [Object], [Object] ],

user_reviews: { summaries: [Array], most_relevant: [Array] },

popular_times: { graph_results: [Object] }

}

}

Y ya está. Esto significa que has conseguido escrapear los resultados de Google Maps utilizando nuestra API y ya estás listo para utilizar los datos obtenidos para un montón de propósitos diferentes, tales como el análisis de datos, análisis de negocio, aprendizaje automático, y mucho más. Para más referencias y ejemplos de código en otros 6 lenguajes de programación para que puedas empezar, no dudes en explorar nuestros documentos de Google Maps.

Limitaciones de los resultados de Google Maps Place

Los resultados de lugares de Google Maps, aunque son una potente herramienta para encontrar y explorar lugares, tienen algunas limitaciones que debes tener en cuenta. En primer lugar, la cantidad de datos disponibles para cada lugar es limitada y algunos datos como fotos, ID de lugar, etc. sólo están disponibles a través de la API de Google Maps y requieren una clave API. Además, los datos proporcionados en los resultados de lugares de Google Maps pueden ser dinámicos y cambiar con el tiempo, lo que significa que los datos que obtengas pueden no ser precisos o no estar actualizados.

Conclusión

En conclusión, el scraping de resultados de lugares de Google Maps puede ser una herramienta útil para empresas, investigadores y particulares para encontrar y explorar nuevos lugares. Siguiendo los pasos descritos en este artículo, ahora deberías tener los conocimientos y las herramientas que necesitas para raspar los resultados de lugares de Google Maps utilizando nuestra API con Node.js.

Noticias y actualidad

Manténgase al día de las últimas guías y noticias sobre raspado web suscribiéndose a nuestro boletín.

We care about the protection of your data. Read our <l>Privacy Policy</l>.Privacy Policy.

Artículos relacionados

miniatura
GuíasSERP Scraping API - Guía de inicio

Recopile sin esfuerzo datos en tiempo real de los motores de búsqueda mediante la API SERP Scraping. Mejore el análisis de mercado, el SEO y la investigación temática con facilidad. ¡Empiece hoy mismo!

WebscrapingAPI
avatar de autor
WebscrapingAPI
7 min leer
miniatura
GuíasLas 7 mejores API de SERP de Google (gratuitas y de pago)

Top 7 Google SERP APIs Comparadas: WebScrapingAPI, Apify, Serp API y más - Mejor relación calidad-precio, características, pros y contras

Andrei Ogiolan
avatar de autor
Andrei Ogiolan
10 minutos de lectura
miniatura
GuíasCómo construir un rascador y descargar un archivo con Puppeteer

Descubra 3 maneras de descargar archivos con Puppeteer y construya un raspador web que haga exactamente eso.

Mihnea-Octavian Manolache
avatar de autor
Mihnea-Octavian Manolache
8 min leer