🥳Junte-se à Comunidade Scrapeless e reivindique sua avaliação gratuita para acessar nossa poderosa ferramenta de raspagem da web!
De volta ao blog

Como raspar preços de hotéis do Google com Node.js

Emily Chen
Emily Chen

Advanced Data Extraction Specialist

06-Mar-2025

As mudanças sazonais, a demanda flutuante e as atividades promocionais fazem com que os preços dos hotéis mudem frequentemente. Rastrear manualmente essas mudanças é quase impossível. Em vez disso, automatizar esse processo raspando sites e plataformas de viagens pode economizar tempo e esforço.

Neste artigo, mostraremos como raspar os preços dos hotéis de um dos maiores agregadores: o Google. Ao raspar os dados de hotéis do Google, você pode coletar rapidamente informações extensas sobre preços, avaliações e comodidades de hotéis para análise, comparação de preços ou estratégias de preços dinâmicos.

Por que raspar os preços dos hotéis do Google?

Why Scrape Google Hotel Prices

Quando você pesquisa palavras-chave relacionadas a hotéis, o Google gera uma seção de hotéis dedicada que inclui nomes, imagens, endereços, avaliações e preços para milhares de hotéis. Isso ocorre porque o Google agrega informações de milhões de sites de viagens e hotéis em um único local.

Viajantes, empresas e analistas podem usar esses dados para diversos fins:

  • Comparação de preços: Compare preços em diferentes plataformas de reserva e sites de viagens para encontrar as melhores ofertas.
  • Análise de dados: Os analistas podem usar os dados de preços de hotéis para descobrir tendências de preços, flutuações sazonais e oportunidades competitivas.
  • Estratégias de precificação dinâmica: As empresas podem otimizar as taxas de receita e ocupação ajustando os preços com base na demanda, disponibilidade e preços dos concorrentes.
  • Alertas personalizados: Monitore quedas de preços para alertar clientes ou para uso pessoal.
  • Serviços de agregação de viagens: Forneça aos usuários uma visão consolidada dos preços e opções de hotéis de várias fontes.
  • Orçamento e planejamento: Os viajantes podem antecipar os custos de acomodação e ajustar seus planos de acordo.

Em resumo, os usos para esses dados são vastos, mas antes que você possa obter insights, precisa coletá-los.

Como raspar os preços dos hotéis do Google com Node.js

Neste tutorial, escreveremos um script para coletar dados de preços de hotéis e classificar a lista de hotéis do mais barato para o mais caro, focando em hotéis em Nova York.

1. Pré-requisitos

Para seguir este tutorial, você precisa ter as seguintes ferramentas instaladas em seu computador:

  • Node.js 18+ e NPM
  • Conhecimento básico de JavaScript e da API do Node.js

2. Configurando o projeto

Crie uma pasta de projeto:

Copy
mkdir google-hotel-scraper

Em seguida, inicialize um projeto Node.js executando o seguinte comando:

Copy
cd google-hotel-scraper  
npm init -y

Este comando criará um arquivo package.json na pasta. Crie um arquivo index.js e adicione uma instrução JavaScript simples:

Copy
touch index.js  
echo "console.log('Hello world!');" > index.js

Execute o arquivo index.js usando o tempo de execução do Node.js:

Copy
node index.js

Se "Hello world!" for impresso no terminal, seu projeto está funcionando.

3. Instalando as dependências necessárias

Para construir nosso raspador, precisamos de dois pacotes Node.js:

  • Puppeteer: Para carregar páginas de hotéis do Google e baixar o conteúdo HTML.
  • Cheerio: Para extrair informações do hotel do HTML baixado pelo Puppeteer.

Instale esses pacotes com o seguinte comando:

Copy
npm install puppeteer cheerio

4. Identificando informações para raspar da página do Hotel Google

Para extrair informações de uma página da web, primeiro precisamos identificar os seletores DOM que direcionam os elementos HTML desejados.

Aqui está uma tabela dos seletores DOM para cada parte dos dados relevantes:

Informação Seletor DOM Descrição
Contêiner do Hotel .uaTTDe Um único item de hotel na lista de resultados
Nome do Hotel .QT7m7 > h2 O nome do hotel
Preço do Hotel .kixHKb > span O preço do quarto por uma noite
Estrelas do Hotel .HlxIlc .UqrZme Número de estrelas
Avaliação do Hotel .oz2bpb > span Avaliações de clientes para o hotel
Opções do Hotel .HlxIlc .XX3dkb Serviços adicionais oferecidos
Imagens do Hotel .EyfHd .x7VXS Imagens do hotel

5. Raspagem da página do Hotel Google

Com os seletores DOM identificados, vamos usar o Puppeteer para baixar o HTML da página. A página inicial que estamos direcionando é: https://www.google.com/travel/search.

Em alguns países (principalmente na Europa), uma página de consentimento será exibida antes de redirecionar para a URL. Adicionaremos código para clicar no botão "Rejeitar todos", esperar três segundos e garantir que a página do Hotel Google esteja totalmente carregada.

Atualize o arquivo index.js com o seguinte código:

Copy
const puppeteer = require('puppeteer');

const PAGE_URL = 'https://www.google.com/travel/search';

const waitFor = (timeInMs) => new Promise(r => setTimeout(r, timeInMs));

const main = async () => {
    const browser = await puppeteer.launch({ headless: 'new' });
    const page = await browser.newPage();

    await page.goto(PAGE_URL);

    const buttonConsentReject = await page.$('.VfPpkd-LgbsSe[aria-label="Reject all"]');
    await buttonConsentReject?.click();
    await waitFor(3000);

    const html = await page.content();
    await browser.close();

    console.log(html);
}

void main();

Execute o código usando node index.js. O terminal exibirá o conteúdo HTML da página.

6. Extraindo informações do HTML

Embora tenhamos o HTML da página, extrair dados valiosos diretamente do HTML bruto é desafiador. É aqui que o Cheerio entra em ação.

O código a seguir carrega o HTML e extrai o preço do quarto para cada hotel:

Copy
const cheerio = require("cheerio");

const $ = cheerio.load(html);

$('.uaTTDe').each((i, el) => {
    const priceElement = $(el).find('.kixHKb span').first();

    console.log(priceElement.text());
});

Atualize o arquivo index.js para extrair o conteúdo com Cheerio, armazená-lo em um array e classificá-lo por preço do mais baixo para o mais alto:

Copy
const cheerio = require("cheerio");
const puppeteer = require("puppeteer");
const { sanitize } = require("./utils");

const waitFor = (timeInMs) => new Promise(r => setTimeout(r, timeInMs));

const GOOGLE_HOTEL_PRICE = 'https://www.google.com/travel/search';

const main = async () => {
  const browser = await puppeteer.launch({ headless: 'new' });
  const page = await browser.newPage();

  await page.goto(GOOGLE_HOTEL_PRICE);

  const buttonConsentReject = await page.$('.VfPpkd-LgbsSe[aria-label="Reject all"]');
  await buttonConsentReject?.click();
  await waitFor(3000);

  const html = await page.content();
  await browser.close();

  const hotelsList = [];
  const $ = cheerio.load(html);

  $('.uaTTDe').each((i, el) => {
    const titleElement = $(el).find('.QT7m7 > h2');
    const priceElement = $(el).find('.kixHKb span').first();
    const reviewsElement = $(el).find('.oz2bpb > span');
    const hotelStandingElement = $(el).find('.HlxIlc .UqrZme');

    const options = [];
    const pictureURLs = [];

    $(el).find('.HlxIlc .XX3dkb').each((i, element) => {
      options.push($(element).find('span').last().text());
    });

    $(el).find('.EyfHd .x7VXS').each((i, element) => {
      pictureURLs.push($(element).attr('src'));
    });

    const hotelInfo = sanitize({
      title: titleElement.text(),
      price: priceElement.text(),
      standing: hotelStandingElement.text(),
      averageReview: reviewsElement.eq(0).text(),
      reviewsCount: reviewsElement.eq(1).text(),
      options,
      pictures: pictureURLs,
    });

    hotelsList.push(hotelInfo);
  });

  const sortedHotelsList = hotelsList.slice().sort((hotelOne, hotelTwo) => {
    if (!hotelTwo.price) {
      return 1;
    }

    return hotelOne.price - hotelTwo.price;
  });

  console.log(sortedHotelsList);
}

void main();

Execute o código e veja os resultados. Você acabou de coletar informações sobre todos os hotéis em.

No conteúdo anterior, implementamos a raspagem dos preços dos hotéis do Google por meio do Node.js e do Puppeteer. Embora esse método possa atender às necessidades básicas, ele requer a escrita de muito código e pode encontrar muitos desafios ao lidar com mecanismos complexos de anti-raspagem.

Para concluir a tarefa de forma mais eficiente, podemos recomendar um método mais simples: usar a Scrapeless Deep SerpAPI.

Use a Scrapeless Deep SerpApi para rastrear informações de hotéis do Google

Deep SerpApi é um mecanismo de busca dedicado para modelos de linguagem grandes (LLM) e agentes de IA, com o objetivo de fornecer informações em tempo real, precisas e imparciais para ajudar os aplicativos de IA a recuperar e processar dados de forma eficiente.

Scrapeless Deep SerpApi

Ele pode ajudar os desenvolvedores a obter rapidamente resultados para mais de 20 cenários diferentes de mecanismos de busca do Google. Ele suporta várias configurações de parâmetros, pode personalizar pesquisas com base na região, idioma e tipo de dispositivo e fornece dados JSON estruturados para os desenvolvedores usarem diretamente.

Deep SerpAPI

Vantagens do Deep SerpAPI

  1. Preço mais baixo: O Deep SerpAPI tem o preço de apenas US$ 0,1/mil. É o menor preço do mercado.

  2. Fácil de usar: Não há necessidade de escrever código complexo, basta obter dados por meio de chamadas de API.

  3. Em tempo real: Cada solicitação pode retornar instantaneamente os resultados de pesquisa mais recentes para garantir a atualidade dos dados.

  4. Suporte global: Por meio de endereços IP globais e clusters de navegadores, garanta que os resultados da pesquisa sejam consistentes com a experiência de usuários reais.

  5. Tipos de dados ricos: Suporta mais de 20 tipos de pesquisa, como Pesquisa Google, Google Maps, Google Shopping etc.

  6. Alta taxa de sucesso: Fornece até 99,995% de disponibilidade de serviço (SLA).

Como usar o playground Deep SerpAPI para raspar informações de hotéis do Google

Deep SerpAPI fornece uma ferramenta online poderosa, Playground, que permite aos desenvolvedores raspar rapidamente informações de hotéis do Google sem escrever código. O Playground é uma interface visual que pode obter dados estruturados de resultados de pesquisa por meio de configurações simples de parâmetros e operações de clique. As etapas detalhadas para usar o Deep SerpAPI Playground para raspar informações de hotéis do Google são as seguintes.

Como obter a CHAVE DA API do Deep SerpAPI:

  • Depois de criar uma conta gratuita no Scrapeless, você recebe 20.000 consultas de pesquisa gratuitas.
  • Navegue até Gerenciamento de chave API. Em seguida, clique em Criar para gerar uma chave API exclusiva. Depois de criada, basta clicar em AP para copiá-la.
**Como obter a CHAVE DA API do Deep SerpAPI

1. Cadastre-se e acesse o Playground

  • Crie uma conta: Se ainda não o fez, inscreva-se em uma conta Deep SerpAPI.
  • Acesse o Deep SerpApi Playground: Depois de fazer login, navegue até a seção "Deep SerpApi".
Sign Up and Access the Playground

2. Defina os parâmetros de pesquisa

  • No Playground, insira sua palavra-chave de pesquisa, como "hotéis em Nova York".
  • Defina outros parâmetros, como data de check-in, data de check-out, país, idioma etc.
Set search parameters

Você também pode clicar para visualizar a documentação oficial da API do Scrapeless para aprender sobre os parâmetros dos Hotéis do Google.

3. Realize uma pesquisa

  • Clique no botão "Iniciar pesquisa" e o Playground enviará uma solicitação à API Deep Serp e retornará dados JSON estruturados.
  • Os dados retornados incluirão o nome do hotel, detalhes da marca, informações de preço, descrição, classificação, instalações, local próximo, classificação do hotel etc.
Perform a search

4. Visualize e exporte dados

  • Navegue pelos dados JSON retornados para visualizar informações detalhadas para cada hotel.
  • Se necessário, você pode clicar em "Exportar" no canto superior direito para exportar os dados para o formato CSV ou JSON para análise posterior.

5. Integre ao seu projeto

  • Se você precisar integrar os dados ao seu aplicativo, o Deep SerpAPI fornece suporte de biblioteca para várias linguagens de programação, incluindo Python, JavaScript, Ruby, PHP, Java, C#, C++, Swift, Go e Rust.

Código de exemplo (Python)

Copy
import json
import requests

class Payload:
    def __init__(self, actor, input_data):
        self.actor = actor
        self.input = input_data

def send_request():
    host = "api.scrapeless.com"
    url = f"https://{host}/api/v1/scraper/request"
    token = "your_token"

    headers = {
        "x-api-token": token
    }

    input_data = {
    "engine": "google_hotel",
       q: query,
       engine: 'google',
       gl: 'us', 
       hl: 'en'  
    }

    payload = Payload("scraper.google.hotel", input_data)

    json_payload = json.dumps(payload.__dict__)

    response = requests.post(url, headers=headers, data=json_payload)

    if response.status_code != 200:
        print("Error:", response.status_code, response.text)
        return

    print("body", response.text)


if __name__ == "__main__":
    send_request()

Plano de preços Deep SerpAPI: acessível e poderoso

Deep SerpAPI fornece uma solução econômica para ajudar os desenvolvedores a obter rapidamente dados da página de resultados de pesquisa do Google (SERP). Seu plano de preços é muito competitivo, com preços a partir de US$ 0,1 por 1.000 consultas, aplicável a mais de 20 cenários de resultados de pesquisa do Google.

Programa de suporte gratuito para desenvolvedores

O Deep SerpAPI agora também oferece um programa de suporte gratuito para desenvolvedores para ajudar os desenvolvedores a integrar e usar melhor sua API. Aqui estão os detalhes do programa:

  • Suporte de integração: Integre o Deep SerpAPI às suas ferramentas de IA, aplicativos ou projetos. Já suportamos o Dify e em breve também daremos suporte ao Langchain, Langflow, FlowiseAI e outras estruturas.
  • Duração do suporte gratuito: Após a integração, os desenvolvedores podem obter de 1 a 12 meses de suporte gratuito para desenvolvedores compartilhando seus resultados no GitHub ou nas redes sociais.
  • Cota de uso: Até 500 mil usos por mês, ajudando os desenvolvedores a não se preocupar com problemas de custo nos estágios iniciais do projeto.
Free Developer Support Program

Você pode entrar no Discord para entrar em contato com Liam para saber mais sobre a participação no evento

Conclusão

Em resumo, raspar os preços de hotéis do Google com Node.js pode ser um método valioso para coletar dados de preços, mas apresenta desafios como lidar com conteúdo dinâmico e evitar a detecção. Embora ferramentas como Puppeteer ou Playwright possam ajudar, elas exigem manutenção contínua e experiência técnica. Para otimizar o processo, recomendamos o uso do Scrapeless, que fornece uma solução sem complicações e sem código para extrair dados de preços de hotéis de forma eficiente e confiável. Com o Scrapeless, você pode se concentrar nos insights em vez das complexidades da raspagem da web. Experimente hoje mesmo e simplifique sua coleta de dados!

Recursos adicionais

Como raspar notícias do Google com Python
Como usar o Selenium com o PowerShell
Raspando detalhes do produto do Google Shopping com Scrapeless

Na Scorretless, acessamos apenas dados disponíveis ao público, enquanto cumprem estritamente as leis, regulamentos e políticas de privacidade do site aplicáveis. O conteúdo deste blog é apenas para fins de demonstração e não envolve atividades ilegais ou infratoras. Não temos garantias e negamos toda a responsabilidade pelo uso de informações deste blog ou links de terceiros. Antes de se envolver em qualquer atividade de raspagem, consulte seu consultor jurídico e revise os termos de serviço do site de destino ou obtenha as permissões necessárias.

Artigos mais populares

Catálogo