Skip to content

A project that validade and extract data from companys

License

Notifications You must be signed in to change notification settings

ArthurTZ/Scraping

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Web Scraper Automatizado

Este projeto contém um scraper automatizado para interagir com uma plataforma de consulta empresarial, realizando buscas por CNPJ e coletando informações relevantes. Ele simula o comportamento humano para evitar detecção, garantindo a eficiência das consultas.

📌 Visão Geral

O projeto utiliza o Playwright para automatizar a navegação em um portal de consulta, permitindo:

Login automático

Pesquisa de CNPJ

Extração de dados empresariais (quantidade de funcionários, telefone, data de abertura, etc.)

Armazenamento de resultados em Excel, JSON ou TXT

Rotação de User-Agent para evitar bloqueios

Simulação de movimento humano do mouse

🚀 Tecnologias Utilizadas

Python 3.9+

Playwright

Pandas

Faker

Random

📦 Instalação

Antes de começar, instale as dependências:

pip install playwright pandas faker openpyxl
playwright install

🛠️ Como Usar

Configuração Inicial:

Certifique-se de ter um arquivo Excel contendo CNPJs na coluna CNPJ.

Configure seu e-mail e senha para login na plataforma de consulta.

Executando a Automação:

from playwright.sync_api import sync_playwright
from business_scraper import BusinessScraper
from check_sheet import CheckSheet

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    scraper = BusinessScraper(browser)
    check_sheet = CheckSheet("empresas.xlsx", "resultado.xlsx", scraper)
    check_sheet.process_cnpj("seu_email", "sua_senha")
    browser.close()

🔄 Rotação de User-Agent

Para evitar detecção, o scraper possui um método para alterar dinamicamente o User-Agent a cada conjunto de consultas. Esse método simula diferentes navegadores e dispositivos, reduzindo a chance de bloqueios:

def _rotate_user_agent(self):
    """Rotaciona o User-Agent periodicamente"""
    if self.request_count % 5 == 0:
        self.scraper.context.set_extra_http_headers({
            'User-Agent': self.scraper.fake.user_agent()
        })

Essa rotação ocorre a cada 5 consultas realizadas.

🏁 Simulação de Comportamento Humano

Para tornar a automação mais realista e evitar detecção, o scraper simula ações humanas como:

Atrasos aleatórios entre interações para imitar tempos de reação naturais.

Movimentação aleatória do mouse antes de clicar em botões e campos de entrada.

Digitação simulada com variações de velocidade, incluindo pequenas pausas e correções.

Exemplo de movimentação simulada do mouse:
def _human_mouse_move(self, element):
    """Movimenta o mouse de forma realista até o elemento alvo"""
    box = element.bounding_box()
    self.page.mouse.move(
        box['x'] + random.randint(0, int(box['width'])),
        box['y'] + random.randint(0, int(box['height'])),
        steps=random.randint(10, 30)
    )

Essa abordagem reduz a possibilidade de bloqueios por detecção automatizada.

📊 Formatos de Saída

Os dados extraídos podem ser salvos nos seguintes formatos:

Excel (.xlsx) - Com informações detalhadas das empresas

JSON (.json) - Estruturado para consumo programático

TXT (.txt) - Listas simples de CNPJs aprovados e reprovados

⚠️ Observações

O uso desta ferramenta deve respeitar os termos de serviço da plataforma de consulta.

Caso um CAPTCHA seja detectado, o processo solicitará intervenção manual.

Há um limite diário de consultas para evitar bloqueios.

Os métodos de automação incluem delays aleatórios e movimentação simulada do mouse para evitar detecção.

📜 Licença

Este projeto está sob a licença MIT.

About

A project that validade and extract data from companys

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages