Google Search Flights Scraper - transformando uma busca de rota em linhas estruturadas
O Google Flights é onde começa uma parcela muito grande da pesquisa de viagens aéreas. Ele compara uma origem com um destino entre companhias e datas, e apresenta o resultado como uma lista de itinerários: quem voa, quando, quanto tempo leva, quantas vezes para e quanto custa. Essa interface foi feita para escolher um voo. Ela não foi feita para nenhuma pergunta sobre uma rota ao longo do tempo - se uma tarifa está subindo, quanto o serviço direto cobra a mais do que o de uma parada, quais companhias realmente competem em um par de cidades. Este serviço responde a isso transformando uma busca de rota em uma tabela: uma linha por itinerário, onze colunas, exportadas como CSV, JSON ou Excel.
Operá-lo é deliberadamente simples. A referência publicada recebe cada consulta como um par de códigos de aeroporto - origem primeiro, destino depois - com as datas de ida e volta fornecidas separadamente como timestamps UNIX. Deixe a data de volta de fora e a busca é só de ida; a referência afirma claramente que, nesse caso, apenas a data de ida é usada, e a própria ida assume por padrão a data atual. Há ainda parâmetros de idioma e região, e defini-los importa mais aqui do que na maioria dos serviços, pelo efeito que têm sobre os preços.
O ponto central a entender sobre esses dados é que uma tarifa é um momento, e não um fato. O próprio material do Google é incomumente direto quanto a isso: tarifas, impostos, taxas e até quais voos estão à venda podem variar por cidade sob as regras de negócio das companhias; o local de onde você pesquisa afeta os resultados, inclusive quais parceiros de reserva são exibidos; e não se garante que a moeda exibida seja aquela em que você será cobrado. Os preços também mudam com a data da viagem e com a data em que você por acaso pesquisa. Nada disso torna a exportação pouco confiável - torna-a uma série temporal. Registre o horário da captura ao lado de cada linha, mantenha a localidade de busca constante entre as execuções que pretende comparar, e um preço isolado e ambíguo vira uma tendência sobre a qual agir. Mais uma armadilha que vale nomear: departure_time é local ao aeroporto de origem e arrival_time é local ao destino, então subtrair um do outro dá uma resposta errada em qualquer rota que cruze um fuso horário. A coluna duration já considera a diferença e o tempo de conexão; use-a.
Uma nota honesta sobre a evidência por trás desta página. Tudo acima é ou o esquema declarado da exportação - os onze nomes de coluna, idênticos no cabeçalho de todas as seis execuções locais que fizemos - ou uma propriedade documentada da requisição, ou uma declaração publicada pelo Google sobre o seu próprio produto. Não há resultados de extração aqui, porque não temos nenhum: cada uma dessas seis execuções retornou um array vazio. O motivo está registrado internamente e vale repetir, porque também é o que tem mais chance de acontecer com você: o serviço precisa de um proxy residencial, e uma requisição que aciona as defesas do Google volta como uma página sem voos, e não como um erro. Por isso esta página não cita nenhuma tarifa, nenhuma companhia, nenhuma duração e nenhuma contagem de itinerários, e nada disso será acrescentado enquanto uma exportação real não sustentar. O que ela descreve - para que serve cada coluna e como o Google Flights se comporta - é preciso. Comece grátis: suas primeiras 500 linhas não custam nada e não exigem cartão de crédito.