Como extrair dados do Google Trends utilizando Python

Comentários: 0

A utilização de Python e Playwright para extrair dados do Google Trends permite um exame detalhado da popularidade das palavras-chave e a monitorização das mudanças de tendências ao longo do tempo. Esta abordagem fornece informações cruciais para a análise de marketing.

Pré-requisitos

Antes de mergulhar no código, verifique se você tem as seguintes ferramentas instaladas:

  • Python 3.7+;
  • Biblioteca Playwright.

Você pode instalar o Playwright usando pip:

pip install playwright

Para utilizar o Playwright com código assíncrono, também vai precisar da biblioteca asyncio, que está incluída no Python 3.7+ por defeito.

Configurando o Playwright para trabalhar com o Google Trends

Vamos utilizar o Playwright, uma poderosa ferramenta de automatização do browser, para navegar no Web site do Google Trends e transferir ficheiros CSV que contêm dados de tendências. Este tutorial o guiará por todo o processo.

Instalação do Playwright

Primeiro, verifique se o Playwright está instalado:

playwright install

Se você não quiser instalar todos os navegadores, basta usar este comando para instalar apenas o navegador chromium.

playwright install chromium

Configuração do proxy

Ao fazer scraping de plataformas como o Google, que combatem ativamente a atividade dos bots, é essencial utilizar proxies. Os proxies permitem a rotação de IPs, ajudando a reduzir o risco de serem bloqueados. No nosso script, utilizamos proxies privados para encaminhar os nossos pedidos.

proxy = {
    "server": "IP:PORT",
    "username": "your_username",
    "password": "your_password"
}

Substitua as variáveis IP, PORT, nome de utilizador e palavra-passe pelos dados reais do seu servidor proxy.

Processo passo-a-passo de trabalho com o Playwright

Neste exemplo, navegamos primeiro para google.com para contornar quaisquer potenciais bloqueios antes de irmos para a página Google Trends. Isto é feito para imitar o comportamento normal do utilizador e evitar a deteção.

Passo 1: preparando-se para trabalhar com o Google Trends

Esta etapa envolve ações preliminares para evitar ser sinalizado e bloqueado pelo Google:

  • Iniciar o navegador: isso envolve iniciar uma instância do navegador Chromium configurado com configurações de proxy. O uso de proxies ajuda a reduzir as chances de deteção, disfarçando a atividade de raspagem como uso regular do navegador;
  • Navegar para o Google: ao aceder primeiro a google.com, aclimatiza os sistemas de rastreio do Google à presença do que considera ser um novo utilizador. Este simples passo de navegação reduz a probabilidade de as actividades subsequentes serem classificadas como bot-like, evitando assim o bloqueio imediato.
import asyncio
from playwright.async_api import Playwright, async_playwright

async def run(playwright: Playwright) -> None:
    # Iniciar o browser com definições de proxy
    browser = await playwright.chromium.launch(headless=False, proxy={
        "server": "IP:PORT",
        "username": "your_username",
        "password": "your_password"
    })
    
    # Criar um novo contexto de browser
    context = await browser.new_context()
    
    # Abrir uma nova página
    page = await context.new_page()
    
    # Visitar o Google para imitar a navegação normal
    await page.goto("https://google.com")

Passo 2: Navegando e descarregando dados do Google Trends

Em seguida, navegue diretamente para a página do Google Trends onde os dados necessários estão localizados. O Google Trends fornece opções para descarregar os dados diretamente no formato CSV, o que facilita o processo de extração. Automatize a ação de clicar no botão "Transferir" para iniciar a transferência de dados. Isto permite a extração de dados de tendências sem intervenção manual. Quando o botão "Download" ficar visível, a automação deve clicar nele, iniciando o download do arquivo CSV que contém os dados de tendência necessários.

 # Navegar para o Google Trends
    await page.goto("https://trends.google.com/trends/explore?q=%2Fg%2F11bc6c__s2&date=now%201-d&geo=US&hl=en-US")
    
    # Esperar pelo botão de transferência e clicar nele
    async with page.expect_download() as download_info:
        await page.get_by_role("button", name="file_download").first.click()
    
    # Gerir a transferência
    download = await download_info.value
    print(download.suggested_filename)

Etapa 3: Guardar dados e terminar a sessão

O ficheiro CSV transferido é guardado automaticamente num diretório especificado no seu dispositivo local.

 # Guardar o ficheiro descarregado
    await download.save_as("/path/to/save/" + download.suggested_filename)

Exemplo de código completo

Aqui está o código completo para baixar dados do Google Trends como um arquivo CSV usando o Playwright:

import asyncio
import os
import re
from playwright.async_api import Playwright, async_playwright


async def run(playwright: Playwright) -> None:
   # Iniciar o browser com definições de proxy
   browser = await playwright.chromium.launch(headless=False, proxy={
       "server": "IP:PORT",
       "username": "your_username",
       "password": "your_password"
   })

   # Criar um novo contexto de browser
   context = await browser.new_context()

   # Abrir uma nova página
   page = await context.new_page()

   # Visitar o Google para evitar a deteção
   await page.goto("https://google.com")

   # Navegar para o Google Trends
   await page.goto("https://trends.google.com/trends/explore?q=%2Fg%2F11bc6c__s2&date=now%201-d&geo=US&hl=en-US")

   # Clique no botão de transferência
   async with page.expect_download() as download_info:
       await page.get_by_role("button", name=re.compile(r"file_download")).first.click()

   # Guardar o ficheiro descarregado
   download = await download_info.value
   destination_path = os.path.join("path/to/save", download.suggested_filename)
   await download.save_as(destination_path)

   # Fechar o contexto e o browser
   await context.close()
   await browser.close()


async def main() -> None:
   async with async_playwright() as playwright:
       await run(playwright)


asyncio.run(main())

Seguindo este guia, pode descarregar eficazmente dados de tendências, gerir a rotação de proxy e contornar os mecanismos de proteção contra bots. Para evitar o bloqueio eficaz, é crucial utilizar servidores proxy fiáveis. Os proxies residenciais, que oferecem endereços IP dinâmicos e não precisam de configuração de rotação, são altamente recomendados. Em alternativa, os proxies ISP estáticos também são eficazes; compre o número necessário de IPs e configure a rotação regular de IPs no seu script. Qualquer uma das opções garante um risco mínimo de bloqueio e captcha, facilitando uma recolha de dados mais rápida e suave.

Comentários:

0 Comentários