Leitores como você ajudam a apoiar o MUO. Quando você faz uma compra usando links em nosso site, podemos ganhar uma comissão de afiliado. Consulte Mais informação.

Quer aprender web scraping com Python, mas está confuso sobre usar Beautiful Soup, Selenium ou Scrapy em seu próximo projeto? Embora todas essas bibliotecas e estruturas Python sejam poderosas por si só, elas não atendem a todas as necessidades de raspagem da web e, portanto, é importante saber qual ferramenta você deve usar para um determinado trabalho.

Vamos dar uma olhada nas diferenças entre Beautiful Soup, Scrapy e Selenium, para que você possa tomar uma decisão sábia antes de iniciar seu próximo projeto de web scraping em Python.

1. Fácil de usar

Se você é iniciante, seu primeiro requisito seria uma biblioteca fácil de aprender e usar. Beautiful Soup oferece todas as ferramentas rudimentares que você precisa para raspar a web, e é especialmente útil para pessoas que têm experiência mínima com Python, mas querem começar a trabalhar com web raspagem.

instagram viewer

A única ressalva é que, devido à sua simplicidade, Beautiful Soup não é tão poderoso em comparação com Scrapy ou Selenium. Programadores com experiência em desenvolvimento podem facilmente dominar Scrapy e Selenium, mas para iniciantes, o o primeiro projeto pode levar muito tempo para ser construído se eles optarem por usar essas estruturas em vez de Beautiful Sopa.

Para coletar o conteúdo da tag de título em example.com usando Beautiful Soup, você usaria o seguinte código:

URL = "https://example.com/"
res = request.get (url).text
sopa = BeautifulSoup (res, 'html.parser')
titulo = sopa.find("título").texto
imprimir(título)

Para obter resultados semelhantes usando o Selenium, você escreveria:

URL = "https://example.com"
motorista = webdriver. Cromada("caminho/para/chromedriver")
motorista.pegar(url)
título = driver.find_element (Por. TAG_NAME, "título").get_attribute('texto')
imprimir(título)

A estrutura de arquivo de um projeto Scrapy consiste em vários arquivos, o que aumenta sua complexidade. O código a seguir extrai o título de example.com:

importar raspado

aulaTituloAranha(raspado. Aranha):
nome = 'título'
start_urls = ['https://example.com']

defanalisar(auto, resposta):
colheita {
'nome':resposta.css('título'),
}

Se você deseja extrair dados de um serviço que oferece uma API oficial, pode ser uma decisão sábia use a API em vez de desenvolver um web scraper.

2. Velocidade de raspagem e paralelização

Dos três, Scrapy é o vencedor claro quando se trata de velocidade. Isso ocorre porque ele oferece suporte à paralelização por padrão. Usando o Scrapy, você pode enviar várias solicitações HTTP de uma só vez e, quando o script baixar o código HTML para o primeiro conjunto de solicitações, ele estará pronto para enviar outro lote.

Com o Beautiful Soup, você pode usar a biblioteca de encadeamento para enviar solicitações HTTP simultâneas, mas não é conveniente e você terá que aprender multithreading para fazer isso. No Selenium, é impossível obter a paralelização sem iniciar várias instâncias do navegador.

Se você classificasse essas três ferramentas de raspagem da web em termos de velocidade, Scrapy é a mais rápida, seguida por Beautiful Soup e Selenium.

3. Uso de memória

Selenium é uma API de automação de navegador, que encontrou suas aplicações em o campo de raspagem da web. Quando você usa o Selenium para raspar um site, ele gera uma instância de navegador sem cabeça que é executada em segundo plano. Isso torna o Selenium uma ferramenta de uso intensivo de recursos quando comparado com Beautiful Soup e Scrapy.

Como os últimos operam inteiramente na linha de comando, eles usam menos recursos do sistema e oferecem melhor desempenho do que o Selenium.

4. Requisitos de Dependência

Beautiful Soup é uma coleção de ferramentas de análise que ajudam a extrair dados de arquivos HTML e XML. Ele é enviado sem mais nada. Você tem que usar bibliotecas como solicitações de ou urllib para fazer solicitações HTTP, analisadores integrados para analisar HTML/XML e bibliotecas adicionais para implementar proxies ou suporte a banco de dados.

Scrapy, por outro lado, vem com tudo. Você obtém ferramentas para enviar solicitações, analisar o código baixado, executar operações nos dados extraídos e armazenar as informações extraídas. Você pode adicionar outras funcionalidades ao Scrapy usando extensões e middleware, mas isso viria depois.

Com o Selenium, você baixa um driver da Web para o navegador que deseja automatizar. Para implementar outros recursos, como armazenamento de dados e suporte a proxy, você precisaria de módulos de terceiros.

5. Qualidade da Documentação

No geral, cada documentação do projeto é bem estruturada e descreve todos os métodos usando exemplos. Mas a eficácia da documentação de um projeto também depende muito do leitor.

A documentação do Beautiful Soup é muito melhor para iniciantes que estão começando com web scraping. Selenium e Scrapy têm documentação detalhada, sem dúvida, mas o jargão técnico pode pegar muitos novatos desprevenidos.

Se você tem experiência com conceitos e terminologias de programação, qualquer uma das três documentações seria muito fácil de ler.

6. Suporte para extensões e middleware

Scrapy é a estrutura Python de raspagem da web mais extensível, ponto final. Ele oferece suporte a middleware, extensões, proxies e muito mais, e ajuda você a desenvolver um rastreador para projetos de grande escala.

Você pode escrever rastreadores infalíveis e eficientes implementando middlewares no Scrapy, que são basicamente ganchos que adicionam funcionalidade personalizada ao mecanismo padrão da estrutura. Por exemplo, o HttpErrorMiddleware cuida dos erros de HTTP para que os spiders não precisem lidar com eles enquanto processam as solicitações.

Middleware e extensões são exclusivos do Scrapy, mas você pode obter resultados semelhantes com Beautiful Soup e Selenium usando bibliotecas Python adicionais.

7. Renderização JavaScript

O Selenium tem um caso de uso em que supera outras bibliotecas de raspagem da Web, ou seja, a raspagem de sites habilitados para JavaScript. Embora você possa raspar elementos JavaScript usando middlewares Scrapy, o fluxo de trabalho do Selenium é o mais fácil e conveniente de todos.

Você usa um navegador para carregar um site, interagir com ele usando cliques e pressionamentos de botão e, quando você tem o conteúdo que precisa para raspar na tela, extraia-o usando CSS e XPath do Selenium seletores.

Beautiful Soup pode selecionar elementos HTML usando seletores XPath ou CSS. No entanto, ele não oferece funcionalidade para extrair elementos renderizados por JavaScript em uma página da web.

Web Scraping facilitado com Python

A internet está cheia de dados brutos. A raspagem da Web ajuda a converter esses dados em informações significativas que podem ser bem utilizadas. Selenium é provavelmente a sua aposta mais segura se você quiser raspar um site com JavaScript ou precisar acionar alguns elementos na tela antes de extrair os dados.

O Scrapy é uma estrutura completa de raspagem da Web para todas as suas necessidades, quer você queira escrever um pequeno rastreador ou um raspador de grande escala que rastreia repetidamente a Internet em busca de dados atualizados.

Você pode usar o Beautiful Soup se for iniciante ou precisar desenvolver rapidamente um raspador. Seja qual for a estrutura ou biblioteca que você usar, é fácil começar a aprender a raspagem da web com o Python.