Google Maps Autocomplete - sugestões de busca do Maps como linhas estruturadas
Digite as primeiras letras de qualquer coisa no Google Maps e ele propõe dez complementações. Elas vêm do que as pessoas realmente buscam no Maps, o que as torna uma leitura direta de como os clientes pedem uma categoria - as abreviações, os quase sinônimos, as expressões locais que nenhuma taxonomia interna contém. Este serviço transforma esse menu suspenso em uma tabela: uma linha por sugestão, quatro colunas, exportadas como CSV, JSON ou Excel, para quantas consultas iniciais você quiser enviar. A referência publicada aceita o parâmetro query como um array e agrupa até mil consultas em uma única requisição.
A exportação tem duas propriedades que puxam em direções opostas, e entender as duas é todo o trabalho. Seu tamanho é perfeitamente previsível: cada consulta inicial retorna exatamente dez sugestões - isso se confirmou em todos os blocos que medimos, sem blocos curtos nem longos - então linhas é consultas vezes dez, conhecido antes de qualquer gasto. Seu conteúdo não é nada previsível. Executamos uma consulta seis vezes e recebemos seis listas diferentes, com apenas quatro das suas dez sugestões comuns às duas primeiras execuções; outra consulta compartilhou só duas de dez entre execuções. O autocomplete do Maps é uma superfície viva, não uma tabela de consulta, e uma extração é uma anedota, não uma resposta.
Essa instabilidade é gerenciável assim que você para de lutar contra ela. Amostre cada consulta inicial várias vezes e ordene as complementações pela frequência com que se repetem: uma expressão que aparece em todas as amostras é linguagem de demanda genuinamente estável, e uma que aparece uma vez só não merece ação. A frequência entre execuções é aqui a medição de verdade, o que também significa que o modelo de custo difere do da maioria dos scrapers: amostrar dez consultas cinco vezes cada aproveita melhor o mesmo gasto do que extrair cinquenta consultas uma vez. Duas das nossas execuções voltaram vazias, então um trabalho agendado deve tentar de novo em vez de supor que toda requisição retorna algo.
Dois detalhes menores que convém acertar. A coluna position é uma posição dentro do menu suspenso de uma consulta, e não um número de linha: vai de 1 a 10 e recomeça na consulta seguinte, então um arquivo de cinquenta consultas contém o número 1 cinquenta vezes, e o agrupamento por query precisa vir antes de qualquer ordenação. E a coluna coordinates é uma entrada devolvida - o fragmento @lat,lng,zoom de uma URL do Maps, idêntico em todas as linhas de uma execução - e não a localização do lugar sugerido. Nas nossas cem linhas ela carregava apenas dois valores distintos, um vazio e o outro exatamente o padrão que a referência documenta, então nossos dados mostram que a coluna existe e repete o que você enviou, e não mostram nada sobre como uma coordenada escolhida deliberadamente altera os resultados. Note também que uma sugestão é uma expressão e não uma ficha: não há aqui id de lugar, endereço ou avaliação. Colete as expressões e depois entregue-as ao scraper do Maps. Comece grátis: suas primeiras 500 linhas não custam nada e não exigem cartão de crédito.