Différence entre BeautifulSoup et Scrapy crawler?


134

Je souhaite créer un site Web qui montre la comparaison entre le prix des produits amazon et e-bay. Lequel de ceux-ci fonctionnera mieux et pourquoi? Je connais un peu BeautifulSoup mais pas tellement le robot Scrapy .


6
Pourquoi utiliseriez-vous des robots d'exploration alors que ces deux sites ont une excellente API? aws.amazon.com/python developer.ebay.com/common/api
Inbar Rose

5
Je viens d'Inde et je pense qu'Amazon-Api ne prend pas en charge l'hôte indien . il n'y a pas d' API (locale) pour l'inde. 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
Et si je veux explorer un autre site qui n'a pas d'API?
Nishant Bhakta

@InbarRose L'utilisation de l'API produit d'Amazon nécessite un compte Amazon Associate.
Zachary Ryan Smith

Réponses:


231

Scrapy est un framework Web-spider ou web scraper , vous donnez à Scrapy une URL racine pour commencer l'exploration, puis vous pouvez spécifier des contraintes sur le nombre (nombre d'URL) que vous souhaitez explorer et récupérer, etc. C'est un framework complet pour le web-scraping ou l' exploration .

Tandis que

BeautifulSoup est une bibliothèque d'analyse qui fait également un très bon travail de récupération du contenu à partir de l'URL et vous permet d'analyser certaines parties d'entre eux sans aucun problème. Il ne récupère que le contenu de l'URL que vous donnez, puis s'arrête. Il n'analyse pas sauf si vous le placez manuellement dans une boucle infinie avec certains critères.

En termes simples, avec Beautiful Soup, vous pouvez créer quelque chose de similaire à Scrapy. Beautiful Soup est une bibliothèque tandis que Scrapy est un framework complet .

La source


1
ce qui est plus rapide, je veux dire que j'utilise BeautifulSoup et qu'il faut environ 10 secondes pour supprimer des données? Scrapy plus vite que Beautifulsoup?
shuboy2014

Si vous utilisez beautifulsoup avec du code bloquant, scrapy devrait être plus rapide tant qu'il y a des requêtes indépendantes à faire, mais je suppose que vous pouvez également utiliser beautifulsoup avec asyncio pour obtenir de meilleures performances.
dyeray

Je dirais que Scrapy et BeautifulSoup seront très rapides et que vous pourrez tirer le meilleur parti des deux.
Rahul

18

Je pense que les deux sont bons ... je fais actuellement un projet qui utilise les deux. Tout d'abord, je supprime toutes les pages à l'aide de scrapy et je l'enregistre sur une collection mongodb en utilisant leurs pipelines, en téléchargeant également les images qui existent sur la page. Après cela, j'utilise BeautifulSoup4 pour faire un traitement de position où je dois changer les valeurs des attributs et obtenir des balises spéciales.

Si vous ne savez pas quelles pages produits vous voulez, un bon outil sera scrapy puisque vous pouvez utiliser leurs robots d'exploration pour exécuter tous les sites Web amazon / ebay à la recherche des produits sans faire de boucle for explicite.

Jetez un œil à la documentation scrapy, c'est très simple à utiliser.


Alors puis-je utiliser Scrapy sur un serveur Web car il existe de nombreuses dépendances comme (Twisted, pywin32, pyOpenSSL ete ..). (Désolé pour cette question idiote, je suis nouveau en python)
Nishant Bhakta

Sur le serveur Web? Je n'essaye jamais ça ... je l'utilise sur le shell, exécute le "scrapy crawl <nom du robot>" pour exécuter l'araignée ... peut-être que vous pourriez l'utiliser sur le serveur, mais vous devez l'appeler en utilisant le python module de sous-processus ( docs.python.org/2/library/subprocess.html ). Comme je l'ai dit, n'essayez jamais cela, mais peut-être que cela pourrait fonctionner ... juste une note, utilisez le message de journal de scrapy juste pour que vous sachiez où des erreurs peuvent se produire sur votre robot d'exploration (à partir du journal d'importation de scrapy).
rdenadai

4

Les deux utilisent pour analyser les données.

scrapy :

  • Scrapy est un cadre d'exploration et de scraping Web de haut niveau, utilisé pour explorer des sites Web et extraire des données structurées de leurs pages.
  • Mais il a quelques limitations lorsque les données proviennent d'un script java ou d'un chargement dynamique, nous pouvons les surmonter en utilisant des packages tels que splash, sélénium, etc.

BeautifulSoup :

  • Beautiful Soup est une bibliothèque Python permettant d'extraire des données de fichiers HTML et XML.

  • nous pouvons utiliser ce package pour obtenir des données à partir d'un script java ou pour charger dynamiquement des pages.

Scrapy with BeautifulSoup est l'un des meilleurs combos avec lesquels nous pouvons travailler pour gratter des contenus statiques et dynamiques


2

La façon dont je le fais est d'utiliser l'API eBay / Amazon plutôt que de scrapy, puis d'analyser les résultats à l'aide de BeautifulSoup.

Les API vous offrent un moyen officiel d'obtenir les mêmes données que celles que vous auriez obtenues du robot scrapy, sans avoir à vous soucier de cacher votre identité, de vous embêter avec des proxys, etc.


8
La question demande clairement des solutions là où les API ne sont pas disponibles.
Rohanil

2

Scrapy C'est un framework de scraping Web qui contient des tonnes de goodies qui facilitent le scraping afin que nous puissions nous concentrer uniquement sur la logique d'exploration. Certaines de mes choses préférées que scrapy prend soin de nous sont ci-dessous.

  • Exportations de flux : cela nous permet essentiellement d'enregistrer des données dans divers formats tels que CSV, JSON, jsonlines et XML.
  • Grattage asynchrone: Scrapy utilise un framework tordu qui nous donne le pouvoir de visiter plusieurs URL à la fois où chaque demande est traitée de manière non bloquante (Fondamentalement, nous n'avons pas à attendre qu'une demande se termine avant d'envoyer une autre demande).
  • Sélecteurs : C'est ici que nous pouvons comparer la tremblante avec une belle soupe. Les sélecteurs sont ce qui nous permet de sélectionner des données particulières à partir de la page Web comme l'en-tête, certains div avec un nom de classe, etc.). Scrapy utilise lxml pour l'analyse, ce qui est extrêmement rapide que la belle soupe.
  • Définition du proxy, de l'agent utilisateur, des en-têtes, etc.: scrapy nous permet de définir et de faire pivoter le proxy et d'autres en-têtes de manière dynamique.

  • Pipelines d'articles : les pipelines nous permettent de traiter les données après l'extraction. Par exemple, nous pouvons configurer le pipeline pour pousser les données vers votre serveur mysql.

  • Cookies: scrapy gère automatiquement les cookies pour nous.

etc.

TLDR: scrapy est un framework qui fournit tout ce dont on peut avoir besoin pour créer des analyses à grande échelle. Il fournit diverses fonctionnalités qui masquent la complexité de l'exploration des sites Web. on peut simplement commencer à écrire des robots d'exploration sans se soucier du fardeau de l'installation.

Beautiful soup Beautiful Soup est un package Python permettant d' analyser les documents HTML et XML . Ainsi, avec Beautiful soup, vous pouvez analyser une page Web qui a déjà été téléchargée. BS4 est très populaire et ancien. Contrairement à la scrapy, vous ne pouvez pas utiliser une belle soupe uniquement pour faire des robots d'exploration . Vous aurez besoin d'autres bibliothèques comme les requêtes, urllib, etc. pour créer des robots d'exploration avec bs4. Encore une fois, cela signifie que vous devrez gérer la liste des URL en cours d'exploration, pour être explorées, gérer les cookies, gérer le proxy, gérer les erreurs, créer vos propres fonctions pour pousser les données vers CSV, JSON, XML, etc. Si vous voulez accélérer que vous devrez utiliser d'autres bibliothèques comme le multitraitement .

Pour résumer.

  • Scrapy est un framework riche que vous pouvez utiliser pour commencer à écrire des robots d'exploration sans aucune vente.

  • Beautiful soupe est une bibliothèque que vous pouvez utiliser pour analyser une page Web. Il ne peut pas être utilisé seul pour gratter le Web.

Vous devez absolument utiliser scrapy pour votre site Web de comparaison de prix de produits amazon et e-bay. Vous pouvez créer une base de données d'urls et exécuter le robot d'exploration tous les jours (tâches cron, Celery pour la planification des analyses) et mettre à jour le prix de votre base de données. De cette façon, votre site Web tirera toujours de la base de données et le robot d'exploration et la base de données agiront comme des composants individuels.


1

BeautifulSoup est une bibliothèque qui vous permet d'extraire des informations d'une page Web.

Scrapy, quant à lui, est un framework qui fait la chose ci-dessus et bien d'autres choses dont vous avez probablement besoin dans votre projet de scraping, comme des pipelines pour enregistrer des données.

Vous pouvez consulter ce blog pour commencer avec Scrapy https://www.inkoop.io/blog/web-scraping-using-python-and-scrapy/


0

En utilisant scrapy, vous pouvez enregistrer des tonnes de code et commencer avec une programmation structurée.Si vous n'aimez aucune des méthodes pré-écrites de scapy, BeautifulSoup peut être utilisé à la place de la méthode scrapy. Un grand projet présente les deux avantages.


0

Les différences sont nombreuses et le choix de tout outil / technologie dépend des besoins individuels.

Quelques différences majeures sont:

  1. BeautifulSoup est relativement facile à apprendre que Scrapy.
  2. Les extensions, le support, la communauté sont plus larges pour Scrapy que pour BeautifulSoup.
  3. Scrapy doit être considéré comme une araignée tandis que BeautifulSoup est un analyseur .
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.