Gerapy Web Scraping: Um Guia de Implantação de Scrapy Full Stack

Domine a raspagem da Web com o Gerapy. Este guia aborda a configuração, correções de erros, dicas de implantação e muito mais.
12 min de leitura
Web Scraping with Gerapy blog image

O Gerapy é uma solução de pilha completa para a implantação do Scrapy. Se você olhar o histórico de commits, verá que ele recebeu algumas alterações de dependência, mas não foi realmente atualizado desde 2022. Iniciar o Gerapy pode ser um processo difícil, muitas vezes repleto de tentativas e erros.

Este guia existe para tornar o Gerapy mais fácil. Ao final deste guia, você será capaz de responder às seguintes perguntas.

  • Por que o Gerapy não funciona com minha instalação padrão do Python?
  • Como posso configurar o Python e o pip para o Gerapy?
  • Como faço para criar uma conta de administrador?
  • Como faço para escrever meu primeiro scraper?
  • Como faço para solucionar problemas do meu raspador?
  • Como faço para testar e implementar meu raspador?

Introdução ao Gerapy

Vamos entender melhor o que de fato é o Gerapy e o que o torna único.

O que é Gerapy?

A Gerapy nos fornece um painel de gerenciamento Django e a API Scrapyd. Esses serviços oferecem uma interface simples, porém avançada, para gerenciar sua pilha. Neste momento, é um programa legado, mas ainda melhora o fluxo de trabalho e acelera a implementação. O Gerapy torna a raspagem da Web mais acessível para DevOps e equipes orientadas para o gerenciamento.

  • Painel de controle GUI para criar e monitorar raspadores.
  • Implemente um scraper com o clique de um botão.
  • Obtenha visibilidade em tempo real dos registros e erros à medida que eles ocorrem.

O que torna o Gerapy único?

O Gerapy oferece uma solução completa para o gerenciamento de scrapers. Começar a trabalhar com o Gerapy é um processo tedioso devido ao seu código legado e às dependências. No entanto, depois de colocá-lo em funcionamento, você terá acesso a um conjunto completo de ferramentas adaptadas para lidar com scrapers em escala.

  • Crie seus raspadores de dentro do navegador.
  • Implemente-os no Scrapyd sem tocar na linha de comando.
  • Gerenciamento centralizado de todos os seus rastreadores e scrapers.
  • Frontend desenvolvido em Django para gerenciamento de aranhas.
  • Backend com tecnologia Scrapyd para facilitar a criação e a implementação.
  • Agendador integrado para automação de tarefas.

Como fazer scraping da Web com o Gerapy

O processo de configuração do Gerapy é trabalhoso. Você precisa lidar com a dívida técnica e realizar a manutenção do software. Depois de muita tentativa e erro, descobrimos que o Gerapy não é compatível nem mesmo com as versões mais modernas do Python. Começamos com uma instalação moderna do Python 3.13. Ela era moderna demais para as dependências do Gerapy. Tentamos a versão 3.12 – ainda sem sorte – apenas mais problemas de dependência.

No fim das contas, precisávamos do Python 3.10. Além disso, precisávamos alterar parte do código real do Gerapy para corrigir uma classe obsoleta e, em seguida, precisávamos fazer o downgrade manual de quase todas as dependências do Gerapy. O Python passou por mudanças significativas nos últimos três anos e o desenvolvimento do Gerapy não acompanhou esse ritmo. Precisamos recriar as condições ideais do Gerapy de três anos atrás.

Configuração do projeto

Python 3.10

Para começar, precisamos instalar o Python 3.10. Essa versão não está extinta, mas não está mais amplamente disponível. No Ubuntu nativo e no Windows WSL com Ubuntu, ele pode ser instalado com o apt.

sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.10 python3.10-venv python3.10-dev

Em seguida, você pode verificar se ele está instalado com o sinalizador --version.

python3.10 --version

Se tudo correr bem, você verá um resultado semelhante ao resultado abaixo.

Python 3.10.17

Criação de uma pasta de projeto

Primeiro, crie uma nova pasta.

 mkdir gerapy-environment

Em seguida, precisamos acessar a pasta do nosso novo projeto e configurar um ambiente virtual.

cd gerapy-environment
python3.10 -m venv venv

Ativar o ambiente.

source venv/bin/activate

Quando seu ambiente estiver ativo, você poderá verificar a versão ativa do Python.

python --version

Como você pode ver, o python agora tem como padrão a nossa instalação 3.10 no ambiente virtual.

Python 3.10.17

Instalação de dependências

O comando abaixo instala o Gerapy e suas versões de dependência necessárias. Como você pode ver, precisamos direcionar manualmente muitos pacotes legados usando pip==.

pip install setuptools==80.8.0
pip install scrapy==2.7.1 gerapy==0.9.13 scrapy-splash==0.8.0 scrapy-redis==0.7.3 scrapyd==1.2.0 scrapyd-client==1.2.0 pyopenssl==23.2.0 cryptography==41.0.7 twisted==21.2.0

Agora, criaremos um projeto Gerapy real com o comando init.

gerapy init

Em seguida, entraremos em nossa pasta gerapy e executaremos o migrate para criar nosso banco de dados.

cd gerapy
gerapy migrate

Agora, é hora de criar uma conta de administrador. Esse comando lhe dá privilégios de administrador por padrão.

gerapy initadmin

Por fim, iniciamos o servidor Gerapy.

gerapy runserver

Você deverá ver um resultado como este.

Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).
INFO - 2025-05-24 13:49:16,241 - process: 1726 - scheduler.py - gerapy.server.core.scheduler - 105 - scheduler - successfully synced task with jobs with force
May 24, 2025 - 13:49:16
Django version 2.2.28, using settings 'gerapy.server.server.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

Usando o Dashboard

Ao acessar http://127.0.0.1:8000/, você será solicitado a fazer login. Seu nome de conta padrão é admin, assim como sua senha. Depois de fazer login, você será levado ao painel do Gerapy.

Painel de controle do Gerapy

Clique na guia “Projects” (Projetos) e crie um novo projeto. Vamos chamá-lo de ” quotes“.

Criação de um novo projeto Gerapy

Obtendo o site de destino

Agora, vamos criar uma nova aranha. Em seu novo projeto, clique no botão “add spider”. Na seção “Start Urls”, adicione https://quotes.toscrape.com. Em “Domains” (Domínios), digite quotes.toscrape.com.

Como adicionar nosso URL e domínio

Lógica de extração

Em seguida, adicionaremos nossa lógica de extração. A função parse() abaixo usa seletores CSS para extrair citações da página. Você pode saber mais sobre seletores aqui.

Role para baixo até a seção “Inner Code” (Código interno) e adicione sua função de análise.

def parse(self, response):
    quotes = response.css('div.quote')
    print(f"Found {len(quotes)} quotes")
    for quote in quotes:
        text = quote.css('span.text::text').get()
        author = quote.css('small.author::text').get()
        print(f"Text: {text}, Author: {author}")
        yield {
            'text': text,
            'author': author,
        }

Agora, clique no botão “Save” (Salvar) localizado no canto inferior direito da tela. Se você executar o spider agora, encontrará um erro crítico. O Gerapy está tentando usar o BaseItem do Scrapy. No entanto, o BaseItem foi removido do Scrapy há vários anos.

Erro BaseItem

Como corrigir o erro BaseItem

Para resolver esse erro, precisamos editar o código interno do Scrapy. Você pode fazer isso na linha de comando. No entanto, é muito mais fácil fazê-lo em um editor de texto da GUI com recursos de pesquisa.

cd nos arquivos de origem de seu ambiente virtual.

cd venv/lib/python3.10/site-packages/gerapy/server/core

Para abrir a pasta no VSCode, você pode usar o comando abaixo.

code .

Abra o parser.py e você encontrará o culpado.

O Scrapy tenta importar o BaseItem

Precisamos substituir essa linha pela seguinte.

from scrapy import Item
Substituindo BaseItem por Item em nossas 
importações

Agora que removemos a importação de BaseItem, precisamos remover todas as instâncias de BaseItem com Item. Nossa única instância dela está na função run_callback(). Quando terminar de salvar as alterações, feche o editor.

Substituição de BaseItem por Item em todo o arquivo

Se você executar o spider, receberá um novo erro.

REQUEST_FINGERPRINTER_IMPLEMENTATION Erro de depreciação

Correção da depreciação de REQUEST_FINGERPRINTER_IMPLEMENTATION

Não é aparente, mas o Gerapy, na verdade, injeta nossas configurações diretamente no spider. cd fora da pasta atual e depois na pasta de projetos.

cd
cd gerapy-environment/gerapy/projects/quotes

Mais uma vez, abra seu editor de texto.

code .

Agora, abra seu spider. Ele deve ter o título quotes.py e está localizado na pasta spiders. Você deve ver sua função parse() dentro da classe spider. Na parte inferior do arquivo, você deve ver uma matriz chamada custom_settings. Nossas configurações foram literalmente injetadas no spider pelo Gerapy.

Configurações personalizadas do Spider

Precisamos adicionar uma nova configuração. Você precisa usar a versão 2.7. A versão 2.6 continuará apresentando o erro. Descobrimos isso após várias tentativas e erros.

"REQUEST_FINGERPRINTER_IMPLEMENTATION": "2.7",

Agora, quando você executa o spider usando o botão play do Gerapy, todos os erros são resolvidos. Como você pode ver abaixo, em vez de uma mensagem de erro, vemos apenas uma “Follow Request”.

Nosso Spider agora é executado sem nenhum erro

Colocando tudo junto

Construção do raspador

Se você voltar à guia “Projects” (Projetos) no Gerapy, verá um “X” na coluna “Built” (Construído) do projeto. Isso significa que nosso coletor de dados não foi incorporado em um arquivo executável para implantação.

Nosso projeto Scraper ainda não foi construído

Clique no botão “deploy”. Agora, clique em “build”.

O pacote foi compilado com sucesso

Usando o Agendador

Para programar o scraper para ser executado em um horário ou intervalo específico, clique em “Tasks” (Tarefas) e crie uma nova tarefa. Em seguida, selecione as configurações desejadas para o agendamento.

Definição do cronograma

Quando terminar, clique no botão “create” (criar).

Limitações ao fazer scraping com o Gerapy

Dependências

Seu código legado apresenta muitas limitações que abordamos diretamente neste artigo. Apenas para colocar o Gerapy em funcionamento, foi necessário entrar e editar seu código-fonte interno. Se você não se sente à vontade para mexer nos componentes internos do sistema, o Gerapy não é para você. Lembra-se do erro BaseItem?

Como as dependências do Gerapy continuam a evoluir, o Gerapy permanece congelado no tempo. Para continuar a usá-lo, você precisará manter sua instalação pessoalmente. Isso adiciona dívida técnica na forma de manutenção e um processo muito real de tentativa e erro.

Lembre-se do trecho abaixo. Cada um desses números de versão foi descoberto por meio de um meticuloso processo de tentativa e erro. Quando as dependências quebram, você precisa tentar continuamente diferentes números de versão até obter uma que funcione. Somente neste tutorial, tivemos que usar tentativa e erro para encontrar versões funcionais de 10 dependências. Com o passar do tempo, isso só vai piorar.

pip install setuptools==80.8.0
pip install scrapy==2.7.1 gerapy==0.9.13 scrapy-splash==0.8.0 scrapy-redis==0.7.3 scrapyd==1.2.0 scrapyd-client==1.2.0 pyopenssl==23.2.0 cryptography==41.0.7 twisted==21.2.0

Limitações do sistema operacional

Quando tentamos realizar este tutorial inicialmente, tentamos usar o Windows nativo. Foi assim que descobrimos as limitações iniciais devido às versões do Python. As versões estáveis atuais do Python estão limitadas a 3.9, 3.11 e 3.13. Gerenciar várias versões do Python é difícil, independentemente do sistema operacional. No entanto, o Ubuntu nos oferece o repositório PPA deadsnakes.

Sem deadsnakes, é possível encontrar uma versão compatível do Python, mas, mesmo assim, você precisa lidar com os problemas de PATH e diferenciar entre python (sua instalação padrão) e python3.10. É provável que seja possível lidar com isso nativamente no Windows e no macOS, mas você precisará encontrar uma solução alternativa. Com o Ubuntu e outras distribuições Linux baseadas no apt, você pelo menos obtém um ambiente reproduzível com acesso rápido a versões mais antigas do Python instaladas diretamente em seu PATH.

Integração de proxy com Gerapy

Assim como no próprio Scrapy básico, a integração do proxy é fácil. No verdadeiro espírito da injeção de configurações do Gerapy, podemos injetar um proxy diretamente no spider. No exemplo abaixo, adicionamos as configurações HTTPPROXY_ENABLED e HTTPPROXY_PROXY para nos conectarmos usando o Web Unlocker.

"HTTPPROXY_ENABLED": True,
"HTTPPROXY_PROXY": "http://brd-customer-<your-username>-zone-<your-zone-name>:<your-password>@brd.superproxy.io:33335"

Aqui está o spider completo após a integração do proxy. Lembre-se de trocar o nome de usuário, a zona e a senha por seus próprios.

Aranha integrada ao proxy

Alternativas viáveis ao Gerapy

  • Scrapyd: essa é a verdadeira espinha dorsal por trás do Gerapy e de praticamente qualquer outra pilha Scrapy. Com o Scrapyd, você pode gerenciar tudo por meio das antigas solicitações HTTP e criar um painel de controle, se assim desejar.
  • Funções de raspagem: Nossas funções de raspagem permitem que você implemente seus raspadores diretamente na nuvem e os edite a partir de um IDE on-line – com um painel como o Gerapy, mas mais flexível e moderno.

Conclusão

O Gerapy é um produto legado em nosso mundo em rápida mudança. Ele requer manutenção real e você precisará colocar a mão na massa. Ferramentas como o Gerapy permitem que você centralize seu ambiente de raspagem e monitore tudo em um único painel. Nos círculos de DevOps, o Gerapy oferece utilidade e valor reais.

Se o Scrapy não for a sua praia, oferecemos muitas alternativas viáveis para atender à sua necessidade de coleta de dados. Os produtos abaixo são apenas alguns deles.

  • Raspador personalizado: Crie raspadores sem necessidade de código e implemente-os em nossa infraestrutura de nuvem.
  • Conjuntos de dados: Acesse conjuntos de dados históricos atualizados diariamente de toda a Web. Uma biblioteca do histórico da Internet na ponta de seus dedos.
  • Proxies residenciais: Independentemente de você preferir escrever o código por conta própria ou fazer scraping com IA, nossos proxies lhe dão acesso à Internet com segmentação geográfica em uma conexão de Internet residencial real.

Inscreva-se para uma avaliação gratuita hoje mesmo e leve sua coleta de dados para o próximo nível!

Não é necessário cartão de crédito