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.
Clique na guia “Projects” (Projetos) e crie um novo projeto. Vamos chamá-lo de ” quotes
“.
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
.
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.
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.
Precisamos substituir essa linha pela seguinte.
from scrapy import Item
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.
Se você executar o spider, receberá um novo erro.
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.
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”.
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.
Clique no botão “deploy”. Agora, clique em “build”.
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.
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.
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