🥳Junte-se à Comunidade Scrapeless e Solicite sua avaliação gratuita para acessar nosso poderoso kit de ferramentas de Web Scraping!
Voltar ao blog

Como extrair dados do Google Trends com Python?

Alex Johnson
Alex Johnson

Senior Web Scraping Engineer

25-Dec-2024

O Que é o Google Trends?

O Google Trends é uma ferramenta online gratuita fornecida pelo Google que analisa a popularidade de palavras-chave ou termos de pesquisa específicos no mecanismo de pesquisa do Google ao longo do tempo.

Ele apresenta dados na forma de gráficos para ajudar os usuários a entender a popularidade da pesquisa de um determinado tópico ou palavra-chave e identifica padrões, como flutuações sazonais, tendências emergentes ou declínio do interesse. O Google Trends não apenas suporta a análise de dados globais, mas também pode ser refinado para regiões específicas e fornecer recomendações para termos e tópicos de pesquisa relacionados.

O Google Trends é amplamente utilizado em pesquisas de mercado, planejamento de conteúdo, otimização de SEO e análise de comportamento do usuário, ajudando os usuários a tomar decisões mais informadas com base em dados.

Por exemplo: Neste artigo, vamos extrair as tendências de pesquisa do Google de 'DOGE' do mês anterior.

Tendências de pesquisa do Google para DOGE

Passo 1: Pré-requisitos

Instalar Python

No Windows

Usando o Instalador Oficial do Python

  1. Baixe o Instalador do Python:

    • Acesse o site oficial do Python.
    • O site deve sugerir automaticamente a versão mais recente para Windows. Clique no botão Download Python para baixar o instalador.
  2. Execute o Instalador:

    • Abra o arquivo .exe baixado para iniciar o processo de instalação.
  3. Personalize a Instalação (opcional):

    • Certifique-se de marcar a caixa que diz "Adicionar Python ao PATH" no início da janela de instalação. Isso torna o Python acessível a partir da linha de comando (cmd ou PowerShell).
    • Você também pode clicar em "Personalizar instalação" para escolher recursos adicionais como pip, IDLE ou documentação.
  4. Instale o Python:

    • Clique em Instalar Agora para instalar o Python com as configurações padrão.
    • Após a instalação, você pode verificá-la abrindo o Prompt de Comando (cmd) e digitando:
      bash Copy
      python --version
  5. Instalando pip (se necessário):

    • O pip, o gerenciador de pacotes Python, é instalado por padrão em versões modernas do Python. Você pode verificar se o pip está instalado digitando:
      bash Copy
      pip --version

Você também pode instalar o Python diretamente na Windows Store (disponível no Windows 10/11). Basta pesquisar "Python" no aplicativo Microsoft Store e escolher a versão que você precisa.

No macOS

Método 1. Usando o Homebrew (Recomendado)

  1. Instale o Homebrew (se ainda não estiver instalado):

    • Abra o aplicativo Terminal.
    • Cole o seguinte comando para instalar o Homebrew (gerenciador de pacotes para macOS):
      bash Copy
      /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  2. Instale o Python com o Homebrew:

    • Depois que o Homebrew estiver instalado, você pode instalar o Python com este comando:
      bash Copy
      brew install python
  3. Verifique a Instalação:

    • Após a instalação, você pode verificar as versões do Python e pip com os seguintes comandos:
      bash Copy
      python3 --version
      pip3 --version

Método 2. Usando o Instalador Oficial do Python

  1. Baixe o Instalador do macOS:

  2. Execute o Instalador:

    • Abra o arquivo .pkg para iniciar o processo de instalação e siga as instruções.
  3. Verifique a Instalação:

    • Após a instalação, abra o Terminal e verifique a versão do Python:
      bash Copy
      python3 --version
      pip3 --version

No Linux

Para Distribuições baseadas em Debian/Ubuntu

  1. Atualize a Lista de Pacotes:

    • Abra um terminal e execute o seguinte comando para atualizar a lista de pacotes:
      bash Copy
      sudo apt update
  2. Instale o Python:

    • Para instalar o Python 3 (geralmente a versão mais recente do Python 3.x), execute:
      bash Copy
      sudo apt install python3
  3. Instale o pip (se não estiver instalado):

    • Se o pip não estiver instalado, você pode instalá-lo com:
      bash Copy
      sudo apt install python3-pip
  4. Verifique a Instalação:

    • Para verificar a versão do Python instalada:
      bash Copy
      python3 --version
      pip3 --version

Para Distribuições baseadas em Red Hat/Fedora

  1. Instale o Python 3:

    • Abra um terminal e execute:
      bash Copy
      sudo dnf install python3
  2. Instale o pip (se necessário):

    • Se o pip não estiver instalado por padrão, você pode instalá-lo com:
      bash Copy
      sudo dnf install python3-pip
  3. Verifique a Instalação:

    • Para verificar a versão do Python instalada:
      bash Copy
      python3 --version
      pip3 --version

Para Arch Linux e Distros baseadas em Arch

  1. Instale o Python 3:

    • Execute o seguinte comando:
      bash Copy
      sudo pacman -S python
  2. Instale o pip:

    • O Pip deve ser instalado com o Python, mas se não for, você pode instalá-lo com:
      bash Copy
      sudo pacman -S python-pip
  3. Verifique a Instalação:

    • Para verificar as versões do Python e pip:
      bash Copy
      python --version
      pip --version

Usando Python via Anaconda (Multiplataforma)

Anaconda é uma distribuição popular para computação científica e vem com Python, bibliotecas e o gerenciador de pacotes conda.

  1. Baixe o Anaconda:

  2. Instale o Anaconda:

    • Siga as instruções de instalação com base em seu sistema operacional. O Anaconda fornece um instalador gráfico para Windows e macOS, além de instaladores de linha de comando para todas as plataformas.
  3. Verifique a Instalação:

    • Após a instalação, abra um terminal (ou Anaconda Prompt no Windows) e verifique se o Python está funcionando:

      bash Copy
      python --version
    • Você também pode verificar o conda (o gerenciador de pacotes para Anaconda):

      bash Copy
      conda --version

Gerenciando Versões do Python (opcional)

Se você precisar gerenciar várias versões do Python na mesma máquina, poderá usar gerenciadores de versão:

  • pyenv: Um gerenciador de versão Python popular que funciona no Linux e macOS.

    • Instale via Homebrew ou GitHub (para Linux e macOS).
    • No Windows, você pode usar o pyenv-win.
    bash Copy
    pyenv install 3.9.0
    pyenv global 3.9.0

Como ainda não desenvolvemos uma biblioteca de terceiros para uso, você só precisa instalar solicitações para experimentar o serviço de API Scrapeless

Shell Copy
pip install requests

Passo 2: Configurar os campos de código necessários

Escreva o código

Em seguida, precisamos saber como obter os dados de que precisamos por meio da configuração:

  • Palavra-chave: Neste exemplo, nossa palavra-chave é 'DOGE' (também suportamos a coleta de dados de comparação de várias palavras-chave)
  • Configuração de dados:
    • País: País de consulta, o padrão é 'Global'
    • Tempo: Período de tempo
    • Categoria: Tipo
    • Propriedade: Fonte

Passo 3: Extraindo dados

Agora, vamos obter os dados de destino usando código Python:

Python Copy
import json
import requests


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


def send_request(data_type, search_term):
    host = "api.scrapeless.com"
    url = f"https://{host}/api/v1/scraper/request"
    token = "scrapeless-api-key"  # TODO:use your api key

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

    input_data = {
        "q": search_term,
        "date": "today 1-m",
        "data_type": data_type,
        "hl": "en-sg",
        "tz": "-480",
        "geo": "",
        "cat": "",
        "property": "",
    }

    proxy = {
        "country": "ANY",
    }

    payload = Payload("scraper.google.trends", input_data, proxy)

    json_payload = json.dumps(payload.__dict__)

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

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

    print("body", response.text)


if __name__ == "__main__":
    send_request(data_type="interest_over_time", search_term="DOGE")
  • Saída:
JSON Copy
{"interest_over_time":{"averages":[],"timelineData":[{"formattedAxisTime":"24 Nov","formattedTime":"24 Nov 2024","formattedValue":["85"],"hasData":[true],"time":"1732406400","value":[85]},{"formattedAxisTime":"25 Nov","formattedTime":"25 Nov 2024","formattedValue":["89"],"hasData":[true],"time":"1732492800","value":[89]},{"formattedAxisTime":"26 Nov","formattedTime":"26 Nov 2024","formattedValue":["68"],"hasData":[true],"time":"1732579200","value":[68]},{"formattedAxisTime":"27 Nov","formattedTime":"27 Nov 2024","formattedValue":["60"],"hasData":[true],"time":"1732665600","value":[60]},{"formattedAxisTime":"28 Nov","formattedTime":"28 Nov 2024","formattedValue":["49"],"hasData":[true],"time":"1732752000","value":[49]},{"formattedAxisTime":"29 Nov","formattedTime":"29 Nov 2024","formattedValue":["55"],"hasData":[true],"time":"1732838400","value":[55]},{"formattedAxisTime":"30 Nov","formattedTime":"30 Nov 2024","formattedValue":["54"],"hasData":[true],"time":"1732924800","value":[54]},{"formattedAxisTime":"1 Dec","formattedTime":"1 Dec 2024","formattedValue":["55"],"hasData":[true],"time":"1733011200","value":[55]},{"formattedAxisTime":"2 Dec","formattedTime":"2 Dec 2024","formattedValue":["64"],"hasData":[true],"time":"1733097600","value":[64]},{"formattedAxisTime":"3 Dec","formattedTime":"3 Dec 2024","formattedValue":["57"],"hasData":[true],"time":"1733184000","value":[57]},{"formattedAxisTime":"4 Dec","formattedTime":"4 Dec 2024","formattedValue":["61"],"hasData":[true],"time":"1733270400","value":[61]},{"formattedAxisTime":"5 Dec","formattedTime":"5 Dec 2024","formattedValue":["100"],"hasData":[true],"time":"1733356800","value":[100]},{"formattedAxisTime":"6 Dec","formattedTime":"6 Dec 2024","formattedValue":["84"],"hasData":[true],"time":"1733443200","value":[84]},{"formattedAxisTime":"7 Dec","formattedTime":"7 Dec 2024","formattedValue":["79"],"hasData":[true],"time":"1733529600","value":[79]},{"formattedAxisTime":"8 Dec","formattedTime":"8 Dec 2024","formattedValue":["72"],"hasData":[true],"time":"1733616000","value":[72]},{"formattedAxisTime":"9 Dec","formattedTime":"9 Dec 2024","formattedValue":["64"],"hasData":[true],"time":"1733702400","value":[64]},{"formattedAxisTime":"10 Dec","formattedTime":"10 Dec 2024","formattedValue":["64"],"hasData":[true],"time":"1733788800","value":[64]},{"formattedAxisTime":"11 Dec","formattedTime":"11 Dec 2024","formattedValue":["63"],"hasData":[true],"time":"1733875200","value":[63]},{"formattedAxisTime":"12 Dec","formattedTime":"12 Dec 2024","formattedValue":["59"],"hasData":[true],"time":"1733961600","value":[59]},{"formattedAxisTime":"13 Dec","formattedTime":"13 Dec 2024","formattedValue":["54"],"hasData":[true],"time":"1734048000","value":[54]},{"formattedAxisTime":"14 Dec","formattedTime":"14 Dec 2024","formattedValue":["48"],"hasData":[true],"time":"1734134400","value":[48]},{"formattedAxisTime":"15 Dec","formattedTime":"15 Dec 2024","formattedValue":["43"],"hasData":[true],"time":"1734220800","value":[43]},{"formattedAxisTime":"16 Dec","formattedTime":"16 Dec 2024","formattedValue":["48"],"hasData":[true],"time":"1734307200","value":[48]},{"formattedAxisTime":"17 Dec","formattedTime":"17 Dec 2024","formattedValue":["55"],"hasData":[true],"time":"1734393600","value":[55]},{"formattedAxisTime":"18 Dec","formattedTime":"18 Dec 2024","formattedValue":["52"],"hasData":[true],"time":"1734480000","value":[52]},{"formattedAxisTime":"19 Dec","formattedTime":"19 Dec 2024","formattedValue":["63"],"hasData":[true],"time":"1734566400","value":[63]},{"formattedAxisTime":"20 Dec","formattedTime":"20 Dec 2024","formattedValue":["64"],"hasData":[true],"time":"1734652800","value":[64]},{"formattedAxisTime":"21 Dec","formattedTime":"21 Dec 2024","formattedValue":["47"],"hasData":[true],"time":"1734739200","value":[47]},{"formattedAxisTime":"22 Dec","formattedTime":"22 Dec 2024","formattedValue":["44"],"hasData":[true],"time":"1734825600","value":[44]},{"formattedAxisTime":"23 Dec","formattedTime":"23 Dec 2024","formattedValue":["44"],"hasData":[true],"time":"1734912000","value":[44]},{"formattedAxisTime":"24 Dec","formattedTime":"24 Dec 2024","formattedValue":["46"],"hasData":[true],"isPartial":true,"time":"1734998400","value":[46]}]}}

Passo 4: Otimizar o código

  • Configurar vários países
Python Copy
country_map = {
        "Global": "",
        "Afeganistão":"AF",
        "Ilhas Aland":"AX",
        "Albânia":"AL",
        #...
    }
  • Configurar vários períodos de tempo
Python Copy
time_map = {
        "Última hora":"now 1-H",
        "Últimas 4 horas":"now 4-H",
        "Últimos 7 dias":"now 7-d",
        "Últimos 30 dias":"today 1-m",
        # ...
    }
  • Configurar várias categorias
Python Copy
category_map = {
        "Todas as categorias": "",
        "Artes e Entretenimento": "3",
        "Automóveis e Veículos": "47",
        # ...
    }
  • Configurar várias fontes
Python Copy
property_map = {
        "Pesquisa na Web":"",
        "Pesquisa de Imagens":"images",
        "Google Shopping":"froogle",
         # ...
    }
  • Código aprimorado:
Python Copy
import json
import requests

country_map = {
    "Global": "",
    "Afeganistão": "AF",
    "Ilhas Aland": "AX",
    "Albânia": "AL",
    # ...
}
time_map = {
    "Última hora": "now 1-H",
    "Últimas 4 horas": "now 4-H",
    "Últimos 7 dias": "now 7-d",
    "Últimos 30 dias": "today 1-m",
    # ...
}
category_map = {
    "Todas as categorias": "",
    "Artes e Entretenimento": "3",
    "Automóveis e Veículos": "47",
    # ...
}
property_map = {
    "Pesquisa na Web": "",
    "Pesquisa de Imagens": "images",
    "Google Shopping": "froogle",
    # ...
}


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


def send_request(data_type, search_term, country, time, category, property):
    host = "api.scrapeless.com"
    url = f"https://{host}/api/v1/scraper/request"
    token = "scrapeless-api-key"  # TODO:use your api key

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

    input_data = {
        "q": search_term,  # termo de busca
        "geo": country,
        "date": time,
        "cat": category,
        "property": property,
        "hl": "en-sg",
        "tz": "-480",
        "data_type": data_type
    }

    proxy = {
        "country": "ANY",
    }

    payload = Payload("scraper.google.trends", input_data, proxy)

    json_payload = json.dumps(payload.__dict__)

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

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

    print("body", response.text)


if __name__ == "__main__":
    # um termo de busca
    send_request(
        data_type="interest_over_time",
        search_term="DOGE",
        country=country_map["Global"],
        time=time_map["Últimos 30 dias"],
        category=category_map["Artes e Entretenimento"],
        property=property_map["Pesquisa na Web"],
    )
    # dois termos de busca
    send_request(
        data_type="interest_over_time",
        search_term="DOGE,python",
        country=country_map["Global"],
        time=time_map["Últimos 30 dias"],
        category=category_map["Artes e Entretenimento"],
        property=property_map["Pesquisa na Web"],
    )

Problemas no processo de extração

  • Precisamos fazer julgamentos sobre alguns erros de rede para evitar que erros causem desligamentos;
  • Adicionar um certo mecanismo de repetição pode evitar que interrupções no processo de extração causem aquisição de dados duplicados/inválidos.
  • Passo 1. Faça login no Scrapeless
  • Passo 2. Clique em "API de Extração"
API de Extração
  • Passo 3. Encontre nosso painel "Google Trends" e entre nele:
Google Trends
  • Passo 4. Configure seus dados no painel de operação esquerdo:
Configure seus dados
  • Passo 5. Clique no botão "Iniciar Extração" e você poderá obter o resultado:
Iniciar Extração

Além disso, você também pode consultar nossos códigos de exemplo.

Scrapeless é uma solução inovadora projetada para simplificar o processo de extração de dados de sites. Nossa API foi projetada para navegar pelos ambientes web mais complexos e gerenciar efetivamente o conteúdo dinâmico e a renderização de JavaScript.

Por que o Scrapeless funciona bem para extrair dados do Google Trends?

Se usarmos a codificação Python para extrair dados do Google Trends sozinhos, encontraremos facilmente o sistema de verificação reCAPTHCA. Isso traz grandes desafios para nosso processo de extração.

No entanto, a API de Extração do Google Trends Scrapeless integra o resolvedor de CAPTCHA e a rotação inteligente de IP, portanto, não há necessidade de se preocupar em ser monitorado e identificado pelo site. O Scrapeless garante uma taxa de sucesso de extração de sites de 99,9%, fornecendo um ambiente de extração de dados completamente estável e seguro.

4 vantagens típicas do Scrapeless

  1. Preço competitivo
    O Scrapeless não é apenas poderoso, mas também garante um preço de mercado mais competitivo. O preço da chamada do serviço da API de extração do Google Trends Scrapeless começa em US$ 2 por 1 mil solicitações bem-sucedidas.
  2. Estabilidade
    Ampla experiência e sistemas robustos garantem extração confiável e ininterrupta com recursos avançados de resolução de CAPTCHA.
  3. Velocidade
    Um grande pool de proxies garante extração eficiente em larga escala sem bloqueios de IP ou atrasos.
  4. Custo-efetivo
    A tecnologia proprietária minimiza os custos, permitindo que ofereçamos preços competitivos sem comprometer a qualidade.
  5. Garantia SLAS
    Os acordos de nível de serviço garantem desempenho e confiabilidade consistentes para as necessidades empresariais.

FAQs

Sim, é totalmente legal extrair os dados globais do Google Trends publicamente disponíveis. No entanto, por favor, não danifique seu site enviando muitas solicitações em um curto período de tempo.

O Google Trends não é um reflexo completo da atividade de pesquisa. O Google Trends filtra certos tipos de pesquisas, como pesquisas realizadas por pouquíssimas pessoas. As tendências mostram dados apenas para termos populares, portanto, termos com baixo volume de pesquisa serão exibidos como "0".

Não, o Google Trends ainda não fornece uma API pública. No entanto, você pode acessar os dados do Google Trends por meio de APIs privadas em ferramentas de desenvolvedor de terceiros, como o Scrapeless.

Considerações Finais

O Google Trends é uma ferramenta valiosa de integração de dados que fornece análise de palavras-chave e tópicos de pesquisa populares analisando consultas de pesquisa em mecanismos de pesquisa. Neste artigo, mostramos em detalhes como extrair dados do Google Trends usando Python.

No entanto, a extração de dados do Google Trends usando codificação Python sempre encontra o obstáculo do CAPTCHA. Isso torna sua extração de dados particularmente difícil. Embora a API do Google Trends não esteja disponível, a API do Google Trends Scrapeless será sua ferramenta ideal!

Cadastre-se agora para obter uma poderosa ferramenta de extração do Google Trends!

Na Scrapeless, acessamos apenas dados disponíveis publicamente, cumprindo rigorosamente 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 quaisquer atividades ilegais ou infratoras. Não oferecemos garantias e nos isentamos de qualquer responsabilidade pelo uso de informações deste blog ou de links de terceiros. Antes de se envolver em qualquer atividade de scraping, 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