00:00:00Quando você precisa de um scraper para RAG, o problema não é obter os dados,
00:00:03mas sim limpá-los.
00:00:04O JavaScript quebra as coisas, o HTML é bagunçado,
00:00:07e acabamos perdendo tempo tentando torná-los utilizáveis para o LLM.
00:00:11A solução para isso é o CrawlForAI.
00:00:13Ele foi feito para IA, possui suporte a async,
00:00:15lida com JavaScript e gera markdown ou JSON limpos,
00:00:18além de rodar até seis vezes mais rápido que scrapers tradicionais em Python, como o Scrapy.
00:00:23Obtemos dados prontos para o modelo mais rápido do que eu já vi antes.
00:00:26Como isso funciona? Qual é o diferencial?
00:00:29Estas são as perguntas.
00:00:30[MÚSICA]
00:00:35Então, o que é realmente o CrawlForAI?
00:00:37À primeira vista, parece apenas mais um crawler em Python,
00:00:40mas ele não foi feito para scraping comum, foi feito para IA.
00:00:43Aqui está a diferença.
00:00:44A maioria dos crawlers nos entrega HTML bruto,
00:00:46o CrawlForAI nos entrega um markdown limpo ou JSON estruturado, pronto para um LLM.
00:00:52Ele lida com JavaScript usando o Playwright,
00:00:54roda de forma assíncrona para que realmente escale,
00:00:57e tem o modo prefetch, que pula renderizações pesadas quando você só precisa dos links.
00:01:01Isso importa porque, se estivermos criando chatbots,
00:01:04assistentes ou esses agentes, nosso problema não é o rastreamento,
00:01:08é transformar os dados bagunçados de páginas da web em dados utilizáveis.
00:01:11O CrawlForAI elimina todo esse problema, e de forma rápida.
00:01:15Se você gosta desse tipo de conteúdo, não esqueça de se inscrever.
00:01:18Temos vídeos novos o tempo todo.
00:01:20Vamos começar pelo simples. Aqui está o rastreamento mais básico que configurei.
00:01:23Peguei muito disso do repositório e da documentação deles,
00:01:25e apenas ajustei algumas linhas para fazê-lo rodar.
00:01:28Importei o AsyncWebCrawler, que gerencia requisições web assíncronas para pipelines de IA.
00:01:34Depois, chamo um “run” em uma URL de notícias de tecnologia, só isso.
00:01:38Agora, vejam este resultado.
00:01:40Não estamos recebendo HTML bruto de volta,
00:01:43é um markdown limpo, um JSON limpo.
00:01:45Cabeçalhos estruturados, links preservados,
00:01:47e, por trás de tudo, ele busca a página,
00:01:50analisa o DOM, remove o ruído,
00:01:52e classifica o conteúdo para mantermos o que é importante sem todo aquele excesso de termos técnicos.
00:01:57Agora, se precisarmos criar um resumidor de notícias, neste caso, ou um protótipo de RAG,
00:02:02não precisamos escrever scripts de limpeza,
00:02:04apenas passamos isso diretamente para o seu modelo.
00:02:07Eu esperava um scraping comum, como em qualquer outra ferramenta,
00:02:11mas o que recebemos foram dados que já estão preparados para nós.
00:02:14Essa diferença é tempo economizado.
00:02:17Agora, a coisa fica ainda mais interessante a partir daqui.
00:02:19Enquanto eu testava, percebi que você pode
00:02:20achar que renderizar cada página é necessário.
00:02:23Mas não é bem assim. Vejam só.
00:02:25Este é o mesmo crawler,
00:02:27mas agora definimos o prefetch como true.
00:02:30Vou acessar o Hacker News.
00:02:31Vejam como ele roda rápido!
00:02:33Foi impressionante a velocidade com que executou.
00:02:35Em vez de renderizar cada página,
00:02:37ele captura os links primeiro,
00:02:38apenas via busca assíncrona.
00:02:39Se você estiver criando um agregador, isso é ótimo.
00:02:42Primeiro encontramos o que precisamos,
00:02:44e depois podemos extrair o conteúdo.
00:02:45Você não rastreia tudo,
00:02:47apenas o necessário.
00:02:48Essa diferença escala quando você lida com
00:02:50centenas ou milhares de URLs.
00:02:52Agora, vamos falar um pouco mais sobre o lado da produção.
00:02:55Vou rodar um rastreamento profundo usando a estratégia BFS deep crawl.
00:02:58Esta é a versão deles para a abordagem de busca em largura.
00:03:01Depois, defino o estado de retomada (resume state) bem aqui,
00:03:03e adiciono um callback de mudança de estado.
00:03:07Vou iniciar o rastreamento,
00:03:08e então vou interromper o processo.
00:03:10Agora, na maioria das ferramentas, quando você interrompe,
00:03:13elas precisam recomeçar do zero.
00:03:14Mas quando eu rodo isso de novo, vejam só,
00:03:16reiniciamos usando o estado JSON salvo,
00:03:19e ele continua exatamente de onde parou sem perder nada.
00:03:22Portanto, ao construir uma grande base de conhecimento para RAG,
00:03:24uma interrupção não é apenas chata.
00:03:26Geralmente, sai bem caro.
00:03:29Mas aqui, ele simplesmente continua.
00:03:30Agora, a parte que a maioria dos scrapers não faz: extração semântica.
00:03:35Se eu definir um esquema usando Pydantic,
00:03:37como cargo, empresa e salário,
00:03:39vou fazer o scraping do Indeed.
00:03:40Então, configuro a estratégia de extração via LLM deles
00:03:44com uma instrução e um provedor.
00:03:46Vou rodar no Indeed,
00:03:48o site de listagem de empregos,
00:03:49e vejam só este resultado.
00:03:51Isso é realmente muito bom.
00:03:52JSON estruturado com campos limpos,
00:03:54e aqui está o que está acontecendo.
00:03:56O CrawlForAI converte a página,
00:03:58como eu disse, para markdown ou JSON, você escolhe.
00:04:01Depois, ele envia para um modelo.
00:04:03O modelo estrutura os dados com base no seu esquema.
00:04:06Não está apenas capturando texto,
00:04:07está extraindo exatamente o que queremos.
00:04:09O LLM agora consegue lidar com isso.
00:04:11Esse é um nível de capacidade totalmente diferente para ferramentas de IA.
00:04:15Isso foi legal,
00:04:16mas vamos analisar o panorama geral por um momento.
00:04:18Os pontos positivos: é rápido.
00:04:20É muito rápido, até seis vezes mais em benchmarks.
00:04:22Lida com JavaScript automaticamente.
00:04:24É assíncrono e escalável,
00:04:26e retoma após falhas.
00:04:28Mas o destaque principal aqui
00:04:29é que ele integra LLMs diretamente.
00:04:32Além disso, é de código aberto.
00:04:33Bastou um “pip install” e já estava funcionando.
00:04:35Agora, como em tudo na vida,
00:04:36existem concessões.
00:04:38É apenas para Python, certo?
00:04:39Você pode usar Python ou não.
00:04:41Isso pode ser uma desvantagem.
00:04:42As funções de LLM exigem chaves de API, a menos que você use modelos locais como o Ollama.
00:04:46Fazer muito rastreamento ainda pode causar bloqueios por limite de taxa,
00:04:49e como qualquer projeto de código aberto que evolui rápido,
00:04:51você precisa mantê-lo atualizado, né?
00:04:53Novas atualizações estão sempre saindo.
00:04:54Mas para desenvolvedores focados em IA,
00:04:56ele resolve muitas dores de cabeça, certo?
00:04:58Especialmente nesses pipelines de RAG.
00:05:00Agora, vamos comparar com o que você talvez já use.
00:05:03Scrapy: se você vem do Python, boom.
00:05:05É ótimo para rastreamentos estáticos massivos,
00:05:07mas é baseado em regras e exige muito código repetitivo.
00:05:10Sinceramente, leva muito tempo para configurar.
00:05:13Se você quer extração por LLM em markdown,
00:05:16terá que criar camadas customizadas.
00:05:17Com o CrawlForAI, isso já vem embutido.
00:05:19Tem o Beautiful Soup.
00:05:21É bem leve, até simples demais,
00:05:23mas é apenas um parser.
00:05:25Não tem motor de rastreamento,
00:05:26nem renderização de JavaScript.
00:05:28Você acabaria tendo que juntar várias ferramentas.
00:05:31E, claro, o grande nome é o Selenium.
00:05:33Ele renderiza JavaScript, com certeza, né?
00:05:36Mas é mais lento e muito manual.
00:05:38Escalar fluxos assíncronos nele ainda vai ser um sofrimento.
00:05:42O CrawlForAI envolve o Playwright internamente
00:05:44e expõe uma API assíncrona clara.
00:05:46Se você está criando crawlers tradicionais baseados em regras
00:05:48para dados estáticos,
00:05:49suas ferramentas atuais provavelmente darão conta.
00:05:52Mas se estiver construindo sistemas de IA,
00:05:54pipelines de RAG ou agentes autônomos,
00:05:56o CrawlForAI foi feito sob medida para esse mundo,
00:06:00e é simplesmente uma ferramenta de IA muito bacana.
00:06:02Ele não apenas rastreia páginas, ele prepara os dados,
00:06:04prepara exatamente o que o LLM precisa.
00:06:06Então, esse é o CrawlForAI.
00:06:08Se você gosta de IA, vale a pena conferir.
00:06:11Foi super rápido, eu realmente fiquei chocado com isso.
00:06:14E é muito legal
00:06:15se estivermos construindo esses pipelines no estilo RAG,
00:06:17pois podemos enviar os dados de forma limpa para nossos LLMs.
00:06:20A gente se vê em outro vídeo.