Como extrair da Web os resultados de locais do Google Maps

Andrei Ogiolan em Abr 20 2023

imagem do blogue

Introdução

O Google Maps é um dos serviços de mapeamento e navegação mais utilizados em todo o mundo, proporcionando aos utilizadores uma forma fácil de encontrar e explorar locais, empresas e pontos de interesse. Uma das principais funcionalidades do Google Maps é a capacidade de pesquisar locais e visualizar informações detalhadas sobre os mesmos, tais como a sua localização, críticas, fotografias e muito mais.

A recolha destes dados do Google Maps pode ser útil para uma variedade de objectivos. Por exemplo, as empresas podem utilizar estes dados para acompanhar e analisar o desempenho das suas localizações, os investigadores podem utilizá-los para estudar padrões de comportamento dos consumidores e os indivíduos podem utilizá-los para encontrar e explorar novos locais.

O objetivo deste artigo é fornecer um guia passo-a-passo sobre como extrair resultados de locais do Google Maps com a nossa API utilizando Node.js. Abordaremos tudo, desde a configuração do ambiente de desenvolvimento até à extração de dados relevantes e à descrição de potenciais problemas. No final deste artigo, terá os conhecimentos e as ferramentas necessárias para extrair os resultados de locais do Google Maps por si próprio.

Por que razão deve utilizar um raspador profissional em vez de construir o seu?

Utilizar um scraper profissional pode ser uma melhor opção do que criar o seu próprio scraper por várias razões. Em primeiro lugar, os scrapers profissionais são construídos para lidar com uma grande variedade de tarefas de scraping e são optimizados para desempenho, fiabilidade e escalabilidade. São concebidos para lidar com grandes quantidades de dados e podem lidar com vários tipos de sítios Web e tecnologias Web. Isto significa que os scrapers profissionais podem frequentemente extrair dados mais rapidamente e com maior precisão do que um scraper personalizado.

Além disso, os scrapers profissionais vêm frequentemente com funcionalidades incorporadas, como a resolução de CAPTCHA, a rotação de IP e o tratamento de erros, que podem tornar o processo de scraping mais eficiente e menos propenso a erros. Também oferecem suporte e documentação que podem ser úteis quando se depara com algum problema.

Outro aspeto importante é o facto de os fornecedores de scrapers profissionais cumprirem as políticas de recolha de dados dos sítios Web que recolhem e poderem fornecer uma utilização legal dos dados, o que é importante ter em conta quando se recolhem dados.

Por fim, no nosso caso específico, para extrair os resultados dos locais do Google Maps, é necessário passar um parâmetro de dados para o URL do Google da seguinte forma:

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

O parâmetro de dados tem normalmente o seguinte aspeto: !4m5!3m4!1s + data_id + !8m2!3 + latitude + !4d + longitude. Sei que isto pode parecer intimidante à primeira vista, uma vez que pode não fazer ideia de como obter a propriedade data_id para um local específico e tem razão, porque o Google oculta esta informação e não é visível na página quando está a pesquisar um local no Google Maps. Mas, felizmente, a utilização de um scraper profissional como o nosso trata disso, encontrando estes dados para si. Nas secções seguintes, falaremos sobre como obter o data_id, as coordenadas e como construir facilmente o parâmetro de dados.

Definição do nosso objetivo

O que são os resultados do Google Maps Place?

Os resultados de locais do Google Maps são os resultados apresentados quando um utilizador procura um local no Google Maps. Estes resultados podem incluir locais como empresas, restaurantes, hotéis, pontos de referência e outros pontos de interesse. Cada resultado de local inclui informações como o nome do local, a morada, o número de telefone, o Web site, as críticas e as fotografias. Os resultados do local também incluem uma imagem do Google Maps Street View do local e um mapa que mostra a localização do local. Os resultados do local também podem incluir uma hiperligação para a página Google My Business do local.

Quando um utilizador procura um local no Google Maps, é-lhe apresentada uma lista de resultados de locais que correspondem à sua consulta de pesquisa. Estes resultados são apresentados no mapa e em formato de lista, e podem ser filtrados por vários critérios, como classificação, preço e distância.

A recolha destes dados pode ser útil para empresas que pretendam acompanhar e analisar o desempenho dos seus locais, investigadores que pretendam estudar padrões de comportamento dos consumidores e indivíduos que pretendam encontrar e explorar novos locais.

Como é que é o nosso objetivo?

imagem do blogue

Configuração

Antes de começarmos a extrair os resultados de locais do Google Maps, precisamos de ter a certeza de que temos as ferramentas necessárias disponíveis. A primeira coisa de que precisamos é o Node.js, um tempo de execução de JavaScript que nos permite executar JavaScript no lado do servidor, que pode ser instalado no site oficial. A segunda coisa de que precisa é uma CHAVE DE API, que pode obter facilmente criando uma conta aqui e activando o serviço SERP.

Depois de ter estas coisas configuradas, para executar um script Node.js, só precisa de criar um ficheiro js. Para isso, basta executar o seguinte comando:

$ touch scraper.js 

E agora cole a seguinte linha no seu ficheiro:

consola.log("Hello World!")

E, em seguida, execute o seguinte comando:

$ node scraper.js

Se agora conseguir ver a mensagem "Hello World!" impressa no terminal, significa que instalou o Node.js com êxito e que está pronto para avançar para o último passo.

Agora, o último passo é obter a informação data_id sobre o local em que está interessado. É nesta altura que a nossa API entra em ação. A sua utilização é muito simples e não requer a instalação de quaisquer bibliotecas externas.

Em primeiro lugar, num ficheiro js é necessário importar o módulo `https` do Node.js para poder enviar pedidos à nossa API. Isso pode ser feito da seguinte forma:

const https = require("https");

Em segundo lugar, é necessário especificar a sua chave API, um termo de pesquisa e as coordenadas do local em que está interessado:

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"

Agora, o que precisa de fazer é passar esta informação num objeto de opções para que a nossa API consiga perceber de que local precisa de recolher informação:

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": {}

};

De seguida, é necessário configurar uma chamada para a nossa API com todas estas informações:

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 fim, basta executar o script que construiu e aguardar os resultados:

$ node scraper.js

A propriedade data_id deve ser impressa no ecrã:

$ ​​0x87c0ef253b04093f:0xafdfd6dc1d3a2b4es

E pronto, neste momento já tem tudo o que precisa para criar o parâmetro de dados e está pronto para passar à secção seguinte, que contém o objetivo deste artigo.

Vamos começar a recolher os resultados do Google Place

Agora que tem o seu ambiente configurado, está pronto para começar a extrair os resultados de locais do Google Maps com o Node.js. Como já foi mencionado acima, para extrair resultados de lugares do Google Maps, é necessário configurar o parâmetro de dados. Tendo tudo disponível até agora, você pode fazer isso da seguinte forma:

const data_id = "0x87c0ef253b04093f:0xafdfd6dc1d3a2b4e" // o data_id que obtivemos anteriormente

const latitude = '38.99313451901278'

const longitude = '-94.59368586441806'

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

Agora, tem de modificar o seu objeto de opções para dizer à nossa API que está à procura de resultados de locais. Com este novo parâmetro de dados, a nossa API saberá exatamente qual o local sobre o qual necessita de obter informações:

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": {}

};

O script resultante deve ter o seguinte aspeto :

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();

E depois de executar este script, deve obter uma resposta semelhante 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] }

}

}

E já está. Isso significa que conseguiu extrair com sucesso os resultados dos locais do Google Maps utilizando a nossa API e está pronto para utilizar os dados obtidos para uma série de fins diferentes, como a análise de dados, a análise empresarial, a aprendizagem automática e muito mais. Para obter mais referências e exemplos de código em outras 6 linguagens de programação para começar, sinta-se à vontade para explorar nossos documentos do Google Maps.

Limitações dos resultados de locais do Google Maps

Os resultados de locais do Google Maps, embora sejam uma ferramenta poderosa para encontrar e explorar locais, têm algumas limitações que deve ter em conta. Em primeiro lugar, a quantidade de dados disponíveis para cada local é limitada e alguns dados, como fotografias, ID do local, etc., só estão disponíveis através da API do Google Maps e requerem uma chave de API. Além disso, os dados fornecidos nos resultados dos locais do Google Maps podem ser dinâmicos e mudar ao longo do tempo, o que significa que os dados que extrair podem não ser exactos ou actualizados.

Conclusão

Em conclusão, a recolha de resultados de locais do Google Maps pode ser uma ferramenta útil para empresas, investigadores e indivíduos encontrarem e explorarem novos locais. Seguindo os passos descritos neste artigo, já deve ter os conhecimentos e as ferramentas necessárias para extrair os resultados de locais do Google Maps utilizando a nossa API e o Node.js.

Notícias e actualizações

Mantenha-se atualizado com os mais recentes guias e notícias sobre raspagem da Web, subscrevendo a nossa newsletter.

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

Artigos relacionados

miniatura
GuiasAPI SERP Scraping - Guia de início

Recolha sem esforço dados em tempo real dos motores de busca utilizando a API SERP Scraping. Melhore a análise de mercado, SEO e pesquisa de tópicos com facilidade. Comece hoje mesmo!

WebscrapingAPI
avatar do autor
WebscrapingAPI
7 min. de leitura
miniatura
GuiasAs 7 melhores APIs SERP do Google (gratuitas e pagas)

As 7 principais APIs SERP do Google comparadas: WebScrapingAPI, Apify, Serp API e mais - Melhor relação custo-benefício, recursos, prós e contras

Andrei Ogiolan
avatar do autor
Andrei Ogiolan
10 min. de leitura
miniatura
GuiasComo construir um raspador e descarregar um ficheiro com o Puppeteer

Descubra 3 formas de descarregar ficheiros com o Puppeteer e construa um web scraper que faz exatamente isso.

Mihnea-Octavian Manolache
avatar do autor
Mihnea-Octavian Manolache
8 min. de leitura