¿Diferencia entre BeautifulSoup y Scrapy crawler?

134

Quiero hacer un sitio web que muestre la comparación entre Amazon y el precio del producto e-bay. ¿Cuál de estos funcionará mejor y por qué? Estoy algo familiarizado con BeautifulSoup pero no tanto con Scrapy crawler .

Nishant Bhakta
fuente
66
¿Por qué usaría rastreadores cuando ambos sitios tienen una gran API? aws.amazon.com/python developer.ebay.com/common/api
Inbar Rose
55
Soy de la India y creo que Amazon-Api no es compatible con el host de la India. no hay api (locale) para india. 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' , 'nos': 'ecs.amazonaws.com',}
Nishant Bhakta
11
¿Y si quiero rastrear algún otro sitio que no tenga API?
Nishant Bhakta
@InbarRose El uso de la API de productos de Amazon requiere una cuenta de Amazon Associate.
Zachary Ryan Smith

Respuestas:

231

Scrapy es un marco de Web-spider o web scraper , le das a Scrapy una URL raíz para comenzar a rastrear, luego puedes especificar restricciones sobre cuántas (número de) URL quieres rastrear y buscar, etc. Es un marco completo para el raspado o rastreo web .

Mientras

BeautifulSoup es una biblioteca de análisis que también hace un muy buen trabajo al recuperar contenidos de URL y le permite analizar ciertas partes de ellos sin problemas. Solo recupera el contenido de la URL que usted proporciona y luego se detiene. No se arrastra a menos que lo coloque manualmente dentro de un bucle infinito con ciertos criterios.

En palabras simples, con Beautiful Soup puedes construir algo similar a Scrapy. Beautiful Soup es una biblioteca, mientras que Scrapy es un marco completo .

Fuente

Medeiros
fuente
1
¿cuál es más rápido, quiero decir que estoy usando BeautifulSoup y toma alrededor de 10 segundos para eliminar los datos? hace scrapy más rápido que beautifulsoup?
shuboy2014
Si usa beautifulsoup con código de bloqueo, scrapy debería ser más rápido siempre que haya solicitudes independientes, pero supongo que también puede usar beautifulsoup con asyncio para lograr un mejor rendimiento.
dyeray
Yo diría que Scrapy junto con BeautifulSoup serán súper rápidos y podrás sacar lo mejor de ambos.
Rahul
18

Creo que ambos son buenos ... estoy haciendo un proyecto en este momento que usa ambos. Primero, borro todas las páginas con scrapy y las guardo en una colección mongodb usando sus canalizaciones, también descargando las imágenes que existen en la página. Después de eso, uso BeautifulSoup4 para realizar un procesamiento pos donde debo cambiar los valores de los atributos y obtener algunas etiquetas especiales.

Si no sabe qué productos de páginas desea, una buena herramienta será escasa ya que puede usar sus rastreadores para ejecutar todo el sitio web de Amazon / eBay buscando los productos sin hacer un bucle explícito.

Eche un vistazo a la escasa documentación, es muy fácil de usar.

rdenadai
fuente
Entonces, ¿puedo usar Scrapy en el servidor web porque hay muchas dependencias de este tipo (Twisted, pywin32, pyOpenSSL ete ..). (Perdón por esta tonta pregunta, soy nuevo en Python)
Nishant Bhakta
En el servidor web? Nunca lo intento ... lo uso en el shell, ejecuto el "scrapy crawl <name of crawler>" para ejecutar la araña ... tal vez podrías usar esto en el servidor, pero tienes que llamar a esto usando python módulo de subproceso ( docs.python.org/2/library/subprocess.html ). Como dije, nunca intente esto, pero tal vez podría funcionar ... solo una nota, use el mensaje de registro de scrapy solo para que sepa dónde pueden ocurrir errores en su rastreador (del registro de importación de scrapy).
rdenadai el
4

Ambos están utilizando para analizar datos.

Scrapy :

  • Scrapy es un marco rápido de rastreo y raspado web de alto nivel, utilizado para rastrear sitios web y extraer datos estructurados de sus páginas.
  • Pero tiene algunas limitaciones cuando los datos provienen del script java o se cargan dinámicamente, podemos superarlo usando paquetes como splash, selenium, etc.

BeautifulSoup :

  • Beautiful Soup es una biblioteca de Python para extraer datos de archivos HTML y XML.

  • Podemos usar este paquete para obtener datos del script java o cargar páginas dinámicamente.

Scrapy with BeautifulSoup es uno de los mejores combo con los que podemos trabajar para raspar contenidos estáticos y dinámicos

Arun Augustine
fuente
2

La forma en que lo hago es usar las API de eBay / Amazon en lugar de utilizar el Scrapy, y luego analizar los resultados con BeautifulSoup.

Las API le brindan una forma oficial de obtener los mismos datos que habría obtenido de un rastreador inestable, sin necesidad de preocuparse por ocultar su identidad, meterse con representantes, etc.

Baldnbad
fuente
8
La pregunta claramente pide soluciones donde las API no están disponibles.
Rohanil
2

Scrapy Es un framework de raspado de web que viene con toneladas de cosas que facilitan el raspado para que podamos centrarnos solo en la lógica de rastreo. Algunas de mis cosas favoritas que scrapy cuida de nosotros están a continuación.

  • Exportaciones de feeds : básicamente nos permite guardar datos en varios formatos como CSV, JSON, jsonlines y XML.
  • Raspado asíncrono: Scrapy utiliza un marco retorcido que nos da el poder de visitar varias URL a la vez donde cada solicitud se procesa de manera no bloqueante (Básicamente, no tenemos que esperar a que finalice una solicitud antes de enviar otra solicitud).
  • Selectores : Aquí es donde podemos comparar el scrapy con la hermosa sopa. Los selectores son los que nos permiten seleccionar datos particulares de la página web como el encabezado, ciertos div con un nombre de clase, etc.). Scrapy usa lxml para analizar, que es extremadamente rápido que una sopa hermosa.
  • Configuración de proxy, agente de usuario, encabezados, etc.: scrapy nos permite establecer y rotar el proxy y otros encabezados dinámicamente.

  • Canalizaciones de elementos : las canalizaciones nos permiten procesar datos después de la extracción. Por ejemplo, podemos configurar la canalización para enviar datos a su servidor mysql.

  • Cookies: scrapy maneja automáticamente las cookies por nosotros.

etc.

TLDR: scrapy es un marco que proporciona todo lo que uno podría necesitar para construir rastreos a gran escala. Proporciona varias características que ocultan la complejidad de rastrear las redes. uno simplemente puede comenzar a escribir rastreadores web sin preocuparse por la carga de la configuración.

Beautiful soup Beautiful Soup es un paquete de Python para analizar documentos HTML y XML . Entonces, con Beautiful soup puede analizar una página web que ya se ha descargado. BS4 es muy popular y antiguo. A diferencia de scrapy, no puedes usar una sopa hermosa solo para hacer rastreadores . Necesitará otras bibliotecas como peticiones, urllib, etc. para hacer rastreadores con bs4. Nuevamente, esto significa que necesitaría administrar la lista de URL que se están rastreando, rastrear, manejar cookies, administrar proxy, manejar errores, crear sus propias funciones para enviar datos a CSV, JSON, XML, etc. Si desea acelerar entonces tendrá que usar otras bibliotecas como multiprocesamiento .

Para resumir.

  • Scrapy es un marco rico que puedes usar para comenzar a escribir rastreadores sin problemas.

  • Beautiful soup es una biblioteca que puedes usar para analizar una página web. No se puede usar solo para raspar la web.

Definitivamente debe usar scrapy para su sitio web de comparación de precios de productos de Amazon y e-bay. Puede crear una base de datos de URL y ejecutar el rastreador todos los días (trabajos cron, apio para programar rastreos) y actualizar el precio en su base de datos. De esta manera, su sitio web siempre se extraerá de la base de datos y el rastreador y la base de datos actuarán como componentes individuales.

Amit
fuente
1

BeautifulSoup es una biblioteca que le permite extraer información de una página web.

Scrapy, por otro lado, es un marco, que hace lo anterior y muchas más cosas que probablemente necesite en su proyecto de raspado, como tuberías para guardar datos.

Puede consultar este blog para comenzar con Scrapy https://www.inkoop.io/blog/web-scraping-using-python-and-scrapy/

Jaskaran Singh
fuente
0

Usando scrapy puede guardar toneladas de código y comenzar con una programación estructurada. Si no le gusta ninguno de los métodos preescritos de scapy, BeautifulSoup se puede usar en lugar del método scrapy. El gran proyecto tiene ambas ventajas.

ethirajit
fuente
0

Las diferencias son muchas y la selección de cualquier herramienta / tecnología depende de las necesidades individuales.

Pocas diferencias importantes son:

  1. BeautifulSoup es comparativamente más fácil de aprender que Scrapy.
  2. Las extensiones, el soporte y la comunidad son más grandes para Scrapy que para BeautifulSoup.
  3. Scrapy debe considerarse como una araña, mientras que BeautifulSoup es un analizador .
krish___na
fuente