Diferença entre BeautifulSoup e Scrapy crawler?

134

Quero criar um site que mostre a comparação entre o preço do produto amazon e e-bay. Qual destes funcionará melhor e por quê? Estou familiarizado com o BeautifulSoup, mas não com o rastreador Scrapy .

Nishant Bhakta
fonte
6
Por que você usaria rastreadores quando ambos os sites têm uma ótima API? aws.amazon.com/python developer.ebay.com/common/api
Inbar Rose
5
Eu sou da Índia e acho que o Amazon-Api não suporta Índia host. não há API (local) para a Índia. HOSTS = {'ca': 'ecs.amazonaws.ca', 'cn': 'webservices.amazon.cn', 'de': 'ecs.amazonaws.de', 'es': 'webservices.amazon.es' , 'fr': 'ecs.amazonaws.fr', 'it': 'webservices.amazon.it', 'jp': 'ecs.amazonaws.jp', 'uk': 'ecs.amazonaws.co.uk' , 'us': 'ecs.amazonaws.com',}
Nishant Bhakta
11
E se eu quiser rastrear outro site que não tenha API?
Nishant Bhakta 30/10
@InbarRose O uso da API do produto Amazon requer uma conta Amazon Associate.
Zachary Ryan Smith

Respostas:

231

Scrapy é uma estrutura de Web-spider ou raspador de Web . Você fornece ao Scrapy um URL raiz para começar a rastrear e pode especificar restrições sobre quantos (número de) URLs você deseja rastrear e buscar, etc. É uma estrutura completa para rastreamento ou rastreamento na Web .

Enquanto

BeautifulSoup é um biblioteca de análise que também faz um bom trabalho ao buscar conteúdo do URL e permite analisar determinadas partes deles sem qualquer aborrecimento. Ele busca apenas o conteúdo do URL que você fornece e depois para. Ele não rastreia, a menos que você o coloque manualmente em um loop infinito com certos critérios.

Em palavras simples, com Beautiful Soup você pode criar algo semelhante ao Scrapy. Beautiful Soup é uma biblioteca, enquanto Scrapy é uma estrutura completa .

Fonte

Medeiros
fonte
1
o que é mais rápido, quero dizer que estou usando o BeautifulSoup e leva cerca de 10 segundos para descartar dados? scrapy mais rápido que beautifulsoup?
shuboy2014
Se você usa beautifulsoup com código de bloqueio, o scrapy deve ser mais rápido desde que haja solicitações independentes a serem feitas, mas acho que você também pode usar o beautifulsoup com assíncrono para obter melhor desempenho.
dyeray
Eu diria que o Scrapy, juntamente com o BeautifulSoup, será super rápido e você poderá tirar o melhor proveito de ambos.
Rahul
18

Eu acho que os dois são bons ... estou fazendo um projeto agora que usa os dois. Primeiro, raspe todas as páginas usando scrapy e salve-as em uma coleção do mongodb usando seus pipelines, baixando também as imagens existentes na página. Depois disso, uso BeautifulSoup4 para fazer um pós-processamento, onde devo alterar os valores dos atributos e obter algumas tags especiais.

Se você não souber quais páginas de produtos deseja, uma boa ferramenta será obsoleta, pois você pode usar os rastreadores para executar todo o site amazon / ebay procurando os produtos sem criar um loop for explícito.

Dê uma olhada na documentação simplificada, é muito simples de usar.

rdenadai
fonte
Então, eu posso usar o Scrapy no servidor da Web porque existem muitas dependências dele (Twisted, pywin32, pyOpenSSL ete ..). (Desculpe por esta pergunta boba, eu sou novo em python) #
Nishant Bhakta
No servidor web? Eu nunca tentei isso ... eu uso no shell, execute o "scrapy crawl <nome do rastreador>" para executar a aranha ... talvez você possa usar isso no servidor, mas você deve chamar isso usando o python módulo de subprocesso ( docs.python.org/2/library/subprocess.html ). Como eu disse, nunca tente fazer isso, mas talvez funcione ... apenas uma observação, use a mensagem de log do scrapy apenas para você saber onde os erros podem ocorrer no seu rastreador (do log de importação scrapy).
Rdenadai
4

Ambos estão usando para analisar dados.

Scrapy :

  • O Scrapy é uma estrutura rápida de rastreamento e raspagem da Web de alto nível, usada para rastrear sites e extrair dados estruturados de suas páginas.
  • Mas tem algumas limitações quando os dados vêm do script java ou do carregamento dinâmico, podemos superá-los usando pacotes como splash, selênio etc.

Sopa de tomate

  • Beautiful Soup é uma biblioteca Python para extrair dados de arquivos HTML e XML.

  • podemos usar este pacote para obter dados do script java ou carregar páginas dinamicamente.

O Scrapy with BeautifulSoup é uma das melhores combinações com as quais podemos trabalhar para raspar conteúdos estáticos e dinâmicos

Arun Agostinho
fonte
2

O jeito que eu faço é usar as APIs do eBay / Amazon em vez de raspar e analisar os resultados usando o BeautifulSoup.

As APIs oferecem a você uma maneira oficial de obter os mesmos dados que você obteria com o rastreador, sem precisar se preocupar em esconder sua identidade, mexer com proxies, etc.

Balddbad
fonte
8
A pergunta claramente pede soluções onde as APIs não estão disponíveis.
Rohanil
2

Raspagem É uma estrutura de raspagem da Web que vem com toneladas de guloseimas que facilitam a raspagem, para que possamos focar apenas na lógica de rastreamento. Algumas das minhas coisas favoritas que o scrapy cuida de nós estão abaixo.

  • Exportação de feeds : basicamente nos permite salvar dados em vários formatos, como CSV, JSON, jsonlines e XML.
  • Raspagem assíncrona: Scrapy usa estrutura distorcida que nos permite visitar vários URLs de uma só vez, onde cada solicitação é processada de maneira sem bloqueio (basicamente, não precisamos esperar que uma solicitação seja concluída antes de enviar outra solicitação).
  • Seletores : é aqui que podemos comparar o raspar com a bela sopa. Os seletores são o que nos permite selecionar dados específicos da página da Web, como cabeçalho, certa div com o nome de uma classe etc.). O Scrapy usa o lxml para analisar, o que é extremamente rápido que a sopa bonita.
  • Definir proxy, agente do usuário, cabeçalhos etc: scrapy nos permite definir e girar o proxy e outros cabeçalhos dinamicamente.

  • Pipelines de itens : os pipelines nos permitem processar dados após a extração. Por exemplo, podemos configurar o pipeline para enviar dados ao seu servidor mysql.

  • Cookies: scrapy manipula automaticamente os cookies para nós.

etc.

TLDR: scrapy é uma estrutura que fornece tudo o que é necessário para criar rastreamentos em larga escala. Ele fornece vários recursos que ocultam a complexidade do rastreamento das Webs. pode-se simplesmente começar a escrever rastreadores da Web sem se preocupar com a carga da instalação.

Beautiful soup O Beautiful Soup é um pacote Python para analisar documentos HTML e XML . Portanto, com o Beautiful soup, você pode analisar uma página da Web que já foi baixada. BS4 é muito popular e antigo. Ao contrário do scrapy, você não pode usar uma sopa bonita apenas para fazer rastreadores . Você precisará de outras bibliotecas como solicitações, urllib etc. para criar rastreadores com o bs4. Novamente, isso significa que você precisaria gerenciar a lista de URLs que estão sendo rastreadas, rastrear, manipular cookies, gerenciar proxy, manipular erros, criar suas próprias funções para enviar dados para CSV, JSON, XML etc. Se você deseja acelerar do que você precisará usar outras bibliotecas como o multiprocessamento .

Resumindo.

  • O Scrapy é uma estrutura avançada que você pode usar para começar a escrever rastreadores sem nenhum hassale.

  • Beautiful soup é uma biblioteca que você pode usar para analisar uma página da web. Ele não pode ser usado sozinho para raspar a web.

Você definitivamente deve usar o scrapy para o seu site de comparação de preços de produtos da amazon e e-bay. Você pode criar um banco de dados de URLs e executar o rastreador todos os dias (tarefas cron, Celery para agendar rastreamentos) e atualizar o preço em seu banco de dados.

Amit
fonte
1

BeautifulSoup é uma biblioteca que permite extrair informações de uma página da web.

Por outro lado, o Scrapy é uma estrutura, que faz o que foi dito acima e muitas outras coisas que você provavelmente precisa no seu projeto de scraping, como pipelines para salvar dados.

Você pode verificar este blog para começar a usar o Scrapy https://www.inkoop.io/blog/web-scraping-using-python-and-scrapy/

Jaskaran Singh
fonte
0

Usando scrapy você pode economizar toneladas de código e começar com a programação estruturada. Se você não gostar de nenhum dos métodos pré-escritos do scapy, o BeautifulSoup pode ser usado no lugar do método scrapy. O grande projeto leva as duas vantagens.

ethirajit
fonte
0

As diferenças são muitas e a seleção de qualquer ferramenta / tecnologia depende das necessidades individuais.

Poucas diferenças principais são:

  1. BeautifulSoup é comparativamente fácil de aprender que Scrapy.
  2. As extensões, suporte e comunidade são maiores para Scrapy do que para BeautifulSoup.
  3. O Scrapy deve ser considerado como uma aranha, enquanto o BeautifulSoup é um analisador .
krish___na
fonte