Scrapling: O Web Scraper que se autorrepara
BBetter Stack
Computing/SoftwareSmall Business/StartupsInternet Technology
Transcript
00:00:00Este é o Scrapling, um scraper em Python que tenta resolver a pior parte do web scraping.
00:00:05O scraper funciona hoje, mas quebra assim que o site muda. Uma classe renomeada,
00:00:10uma div movida, uma verificação de bot e pronto, seu pipeline de dados morreu. A proposta do Scrapling é que
00:00:17seu scraper consiga se adaptar em vez de parar de funcionar. Ele tem mais de 53 mil estrelas no GitHub,
00:00:22suporta parsing adaptativo, fetch stealth e fluxos de trabalho de crawlers maiores.
00:00:27Vou testar a única pergunta que realmente importa.
00:00:30Ele consegue sobreviver a uma mudança no site sem reescrever seletores? Vamos descobrir.
00:00:40Então, o que é o Scrapling? O Scrapling é um framework de web scraping adaptativo e completo para Python.
00:00:46Você recebe um parser que se autocorrige, fetchers stealth, busca baseada em navegador quando o JavaScript é necessário,
00:00:51e um framework de spider para crawls maiores. Uma instalação, uma API. Isso significa menos scrapers
00:00:57quebrados e mais dados utilizáveis. Agora, vamos ver a parte que realmente importa.
00:01:03Se você gosta de codar ferramentas para acelerar seu fluxo de trabalho, não deixe de se inscrever. Temos vídeos saindo
00:01:08o tempo todo. Aqui eu tenho uma configuração básica, certo? Já instalei o Scrapling, então vamos
00:01:13fazer isso rápido. Um import e uma chamada é tudo o que precisamos para pegar a página. Acima, criei um HTML que muda.
00:01:21Um é como um site inicial genérico. Depois, mantive a mesma coisa, mas troquei os seletores CSS.
00:01:27Digamos que eu queira o nome e o preço do produto. Normalmente, eu poderia pegá-los com seletores CSS,
00:01:34certo? Então, page CSS, coloco meu seletor, auto-save, true. Posso fazer isso e vai
00:01:40funcionar e receberemos um dicionário de dados. Parece normal. Dois seletores, um dicionário,
00:01:46sigo em frente. É isso. Mas, ao mesmo tempo, esse é o problema, porque um scraper normal funciona
00:01:52muito bem até que a página mude. Agora, o que acontece se o site mudar aleatoriamente durante a noite? Eles redesenham
00:01:58o site. Eles fazem algo para evitar isso. O título do produto vira cabeçalho do item ou o preço do produto vira
00:02:04valor do preço. Ele tem os mesmos dados na página, mas o DOM inteiro muda. Os seletores antigos deveriam
00:02:11estar mortos. E é aqui que a maioria dos scrapers quebra. Mas agora podemos ativar o modo adaptativo.
00:02:18Uma mudança: autosave igual a true vira adaptive igual a true. Então agora ainda posso colocar título do produto
00:02:26com adaptive definido como true. Mesmos dados. Não mudei os seletores. Estrutura de página diferente sem
00:02:34reescrever o seletor. Essa é a ideia principal aqui. Agora, quando você raspa um elemento com autosave true,
00:02:40o Scrapling grava pistas sobre ele. Então ele gravará coisas como a tag, atributos,
00:02:44pais e filhos, qualquer texto vizinho, provavelmente a posição no DOM e a forma estrutural. Então, quando um
00:02:50nome de classe muda, o Scrapling tem mais pistas. Ele não precisa que o site inteiro permaneça igual.
00:02:56Ele só precisa de sinal estrutural suficiente para reconhecer o elemento novamente. E essa é a
00:03:01parte que importa, porque falhas reais em scrapers quase nunca são um redesign total. É uma classe renomeada,
00:03:06um novo wrapper, um layout deslocado, uma coisinha de nada. É exatamente para isso que o adaptive matching foi criado.
00:03:13O Scrapling tem três grandes partes que realmente importam. A primeira é o parser adaptativo, que você acabou de ver.
00:03:18Depois, tem o fetcher múltiplo, um fluxo de trabalho, a ferramenta certa para o trabalho. O fetcher vai para HTTP simples,
00:03:25rápido para páginas simples. O fetcher furtivo pode contornar anti-bots quando necessário. O fetcher dinâmico é um navegador
00:03:32real para sites pesados em JS. Uma API, troque o fetcher, mantenha o código. O framework de spider é quando scripts
00:03:39rápidos viram um crawler real. Crawling assíncrono, pausa e retomar, rotação de proxy, streaming e todas aquelas
00:03:46sessões mistas. As coisas que você geralmente adiciona depois, já estão lá. O Scrapling não é apenas outro
00:03:53parser. Ele substitui a pilha de scraping. Requests, BeautifulSoup, Playwright, lógica de retry, auxiliares de proxy,
00:04:00código de spider com um fluxo de trabalho. O Scrapling não está dizendo que o BeautifulSoup é inútil e não está dizendo
00:04:06que o Playwright ou Scrapy estão mortos. BeautifulSoup com requests ainda é ótimo para páginas simples. É fácil,
00:04:13legível e todo mundo entende, mas não te dá nenhum tipo de stealth. Não te dá
00:04:20seletores adaptativos e não renderiza JavaScript. E para trabalhos de parsing maiores, pode
00:04:26se tornar um gargalo real. Agora, o Scrapy é poderoso. Se você está construindo uma infraestrutura de
00:04:31crawling séria, o Scrapy ainda merece respeito, mas Scrapy geralmente significa configurações, pipelines, middleware,
00:04:36extensões e muito mais configuração. Playwright e Selenium são ótimos quando você precisa de um navegador real.
00:04:42Às vezes a página só precisa de JavaScript. Não tem como fugir disso. Mas navegadores são pesados. Eles são
00:04:48mais lentos que HTTP puro e usam mais memória. E, novamente, ainda não resolvem o problema de
00:04:54seletores quebrados. Eles executam a página. Eles não entendem o que seu scraper pretendia extrair. Então, com o Scrapling,
00:05:01você pode usar fetching rápido quando possível, stealth quando precisar, usar renderização de navegador quando a página
00:05:06exigir e usar parsing adaptativo. Assim, uma pequena mudança no front-end não faz tudo explodir. Agora, tudo isso
00:05:12não significa que o Scrapling não tenha problemas, certo? Se você está lidando com proteção de nível DOM,
00:05:17fingerprinting avançado ou limites de taxa agressivos, você ainda pode precisar de bons proxies. Então, o Scrapling pode
00:05:23ajudar, mas não te torna invisível. O fetching dinâmico também pode significar uma configuração de navegador extra. Esse é
00:05:29o trade-off quando a renderização JavaScript está envolvida. Aqui vai uma reflexão para tudo isso.
00:05:34O Scrapling vale a pena se você faz trabalho de scraping real, especialmente se está construindo pipelines de dados,
00:05:41tem jobs de RAG, agentes de IA ou qualquer coisa que precise continuar funcionando após o site alvo mudar. O
00:05:47motivo mais forte para usá-lo não é que ele torna o scraping possível. Já temos ferramentas que podem
00:05:53realmente fazer isso, certo? O motivo mais forte é que ele reduz a manutenção. Agora, eu provavelmente
00:05:59pularia se você tiver um script realmente pequeno, certo? Requests e BeautifulSoup vão dar conta,
00:06:04certo? Se você gosta de ferramentas de codificação como esta, não deixe de se inscrever no canal BetterStack. Nos vemos em outro vídeo.
Community Posts
No posts yet. Be the first to write about this video!
Write about this video