Crawlee cobre seu rastreamento e raspagem de ponta a ponta e ajuda você a construir raspadores confiáveis. Rápido.
Crawlee for Python está aberto aos primeiros usuários!
Seus rastreadores parecerão quase humanos e passarão despercebidos pelas proteções modernas de bots, mesmo com a configuração padrão. O Crawlee oferece as ferramentas para rastrear links na web, coletar dados e armazená-los persistentemente em formatos legíveis por máquina, sem ter que se preocupar com detalhes técnicos. E graças às ricas opções de configuração, você pode ajustar quase qualquer aspecto do Crawlee para atender às necessidades do seu projeto, caso as configurações padrão não sejam suficientes.
Veja a documentação completa, guias e exemplos no site do projeto Crawlee ?
Também temos uma implementação TypeScript do Crawlee, que você pode explorar e utilizar em seus projetos. Visite nosso repositório GitHub para obter mais informações sobre Crawlee para JS/TS no GitHub.
Recomendamos visitar o tutorial de introdução na documentação do Crawlee para obter mais informações.
Crawlee está disponível como o pacote PyPI crawlee
. A funcionalidade principal está incluída no pacote base, com recursos adicionais disponíveis como extras opcionais para minimizar o tamanho e as dependências do pacote. Para instalar o Crawlee com todos os recursos, execute o seguinte comando:
pip install ' crawlee[all] '
Em seguida, instale as dependências do Playwright:
playwright install
Verifique se o Crawlee foi instalado com sucesso:
python -c ' import crawlee; print(crawlee.__version__) '
Para obter instruções detalhadas de instalação, consulte a página de documentação de configuração.
A maneira mais rápida de começar a usar o Crawlee é usar o Crawlee CLI e selecionar um dos modelos preparados. Primeiro, certifique-se de ter o Pipx instalado:
pipx --help
Em seguida, execute a CLI e escolha um dos modelos disponíveis:
pipx run crawlee create my-crawler
Se você já tiver crawlee
instalado, poderá ativá-lo executando:
crawlee create my-crawler
Aqui estão alguns exemplos práticos para ajudá-lo a começar a usar diferentes tipos de rastreadores no Crawlee. Cada exemplo demonstra como configurar e executar um rastreador para casos de uso específicos, seja para lidar com páginas HTML simples ou interagir com sites com muito JavaScript. Uma execução do rastreador criará um diretório storage/
em seu diretório de trabalho atual.
O BeautifulSoupCrawler
baixa páginas da web usando uma biblioteca HTTP e fornece conteúdo analisado em HTML ao usuário. Por padrão, ele usa HttpxHttpClient
para comunicação HTTP e BeautifulSoup para análise de HTML. É ideal para projetos que requerem extração eficiente de dados de conteúdo HTML. Este rastreador tem um desempenho muito bom, pois não usa navegador. Porém, se você precisar executar JavaScript do lado do cliente, para obter seu conteúdo, isso não será suficiente e você precisará usar PlaywrightCrawler
. Além disso, se você quiser usar este rastreador, certifique-se de instalar crawlee
com beautifulsoup
extra.
import asyncio
from crawlee . beautifulsoup_crawler import BeautifulSoupCrawler , BeautifulSoupCrawlingContext
async def main () -> None :
crawler = BeautifulSoupCrawler (
# Limit the crawl to max requests. Remove or increase it for crawling all links.
max_requests_per_crawl = 10 ,
)
# Define the default request handler, which will be called for every request.
@ crawler . router . default_handler
async def request_handler ( context : BeautifulSoupCrawlingContext ) -> None :
context . log . info ( f'Processing { context . request . url } ...' )
# Extract data from the page.
data = {
'url' : context . request . url ,
'title' : context . soup . title . string if context . soup . title else None ,
}
# Push the extracted data to the default dataset.
await context . push_data ( data )
# Enqueue all links found on the page.
await context . enqueue_links ()
# Run the crawler with the initial list of URLs.
await crawler . run ([ 'https://crawlee.dev' ])
if __name__ == '__main__' :
asyncio . run ( main ())
O PlaywrightCrawler
usa um navegador headless para baixar páginas da web e fornece uma API para extração de dados. Ele é baseado no Playwright, uma biblioteca de automação projetada para gerenciar navegadores headless. Ele é excelente na recuperação de páginas da web que dependem de JavaScript do lado do cliente para geração de conteúdo ou tarefas que exigem interação com conteúdo baseado em JavaScript. Para cenários em que a execução de JavaScript é desnecessária ou é necessário um desempenho superior, considere usar o BeautifulSoupCrawler
. Além disso, se você quiser usar este rastreador, certifique-se de instalar crawlee
com playwright
extra.
import asyncio
from crawlee . playwright_crawler import PlaywrightCrawler , PlaywrightCrawlingContext
async def main () -> None :
crawler = PlaywrightCrawler (
# Limit the crawl to max requests. Remove or increase it for crawling all links.
max_requests_per_crawl = 10 ,
)
# Define the default request handler, which will be called for every request.
@ crawler . router . default_handler
async def request_handler ( context : PlaywrightCrawlingContext ) -> None :
context . log . info ( f'Processing { context . request . url } ...' )
# Extract data from the page.
data = {
'url' : context . request . url ,
'title' : await context . page . title (),
}
# Push the extracted data to the default dataset.
await context . push_data ( data )
# Enqueue all links found on the page.
await context . enqueue_links ()
# Run the crawler with the initial list of requests.
await crawler . run ([ 'https://crawlee.dev' ])
if __name__ == '__main__' :
asyncio . run ( main ())
Explore nossa página de exemplos na documentação do Crawlee para uma ampla variedade de casos de uso e demonstrações adicionais.
Por que o Crawlee é a escolha preferida para web scraping e crawling?
Crawlee é de código aberto e roda em qualquer lugar, mas como foi desenvolvido pela Apify, é fácil de configurar na plataforma Apify e rodar na nuvem. Visite o site Apify SDK para saber mais sobre como implantar o Crawlee na plataforma Apify.
Se você encontrar algum bug ou problema com o Crawlee, envie um problema no GitHub. Em caso de dúvidas, você pode perguntar no Stack Overflow, nas discussões do GitHub ou pode ingressar em nosso servidor Discord.
Suas contribuições de código são bem-vindas e você será elogiado por toda a eternidade! Se você tiver alguma ideia de melhorias, envie um problema ou crie uma solicitação pull. Para diretrizes de contribuição e código de conduta, consulte CONTRIBUTING.md.
Este projeto está licenciado sob a Licença Apache 2.0 - consulte o arquivo LICENSE para obter detalhes.