WebScrapping y la toma de decisiones: ¿Cómo usar Scrapy para que tu negocio sea más competitivo?

Angeles Cornejo
AvengaLATAM
Published in
6 min readAug 17, 2023

Hace ya varios años que los expertos aseguran estar viviendo en la llamada Era de los datos, un momento histórico en el que la producción de datos crece de manera exponencial.

Dicen que la información es poder y, en este caso, los datos también lo son. Es por eso que, en un mundo en el que se generan cada vez más y más de estos, es necesario disponer de los mismos y aprovechar las ventajas competitivas que se pueden obtener al analizarlos.

A través de la ciencia de datos, las empresas pueden responder preguntas como ¿qué pasó?, ¿por qué?, ¿qué va a pasar? y ¿cómo podemos accionar a partir de los resultados?

Independientemente del objetivo que se posea, siempre será necesario contar con un conjunto de datos adecuado. Pueden ser necesarios para llevar a cabo un análisis de negocio, para entrenar un modelo o para realizar predicciones. Para todos los casos es de vital importancia poseer datos de calidad, que sean consistentes, precisos y válidos.

Por ello, el primer paso es conseguir los datos que permitirán realizar los análisis pertinentes. Esto se conoce como Extracción. Entre las múltiples herramientas y técnicas que permiten realizar la extracción, se encuentra el llamado WebScrapping, que se trata de un proceso que ayuda a recolectar distintos tipos de datos de la web, ya sea de forma manual o automática.

Proceso de Webscrpaing

Ahora bien, ¿cómo se pude aprovechar esta herramienta? y ¿cómo se relaciona el WebScrapping con los negocios?

En el siguiente artículo se explorará el uso de Scrapy, que es una librería de Python que permite extraer datos de páginas web. Esto es el punto de partida para luego poder realizar análisis más complejos, que ayuden a un negocio a posicionarse de forma estratégica y competitiva.

En este caso particular, se propone como ejemplo la situación de un negocio que se dedica a la venta de celulares. Para conocer el precio de sus competidores de forma actualizada hace uso de un script muy corto y sencillo de webscrapping, que busca los precios de dicho producto en una conocida plataforma de comercio argentina.

Instalación y primer proyecto

Instalar Scrapy es muy fácil, y se recomienda hacerlo dentro de un entorno virtual. En este caso, se utiliza el entorno de desarrollo de Pycharm, el cual permite crearlo usando un entorno virtual.

  1. Se crea un nuevo proyecto usando un entorno virtual.
Creación del nuevo proyecto

2. Abrir una nueva terminal dentro del proyecto e instalar la librería con el uso del comando:

pip install scrapy
Abrir terminal integrada
Instalar librería

3. En la terminal, crear un nuevo proyecto con el uso del comando:

scrapy startproject nuevoProyecto
Creación de un nuevo proyecto de tipo Scrapy

En este caso el nuevo proyecto será llamado TutorialWS.

Al crear un nuevo proyecto, se genera automáticamente la siguiente estructura:

  • _init_.py
  • items.py
  • middelwares.py
  • pipelines.py
  • settings.py

Uso de spiders

Una vez creado el proyecto, el siguiente paso es crear la carpeta spiders junto a un archivo Spider. Aquí se definirán todas las clases “arañas” (spiders) que son las encargadas de extraer información de uno o más sitios web, definir las solicitudes iniciales y establecer cómo se hará el mapeo del contenido extraído. Es básicamente un archivo de configuración.

Crear una nueva carpeta junto a un archivo python llamado Spider

Como se mencionó anteriormente, el archivo Spider contendrá las clases que harán el trabajo de extracción. En el caso puntual de este ejemplo, se desea conocer los precios de los celulares comercializados en la plataforma de comercio, por lo que se buscará obtener el nombre del dispositivo que se vende junto con su precio.

Estructura del archivo Spider
import scrapy 

class tutorialSpider(scrapy.Spider):
name = "tutorial"
start_urls = [
"https://listado.mercadolibre.com.ar/samsung"
]

def parse(self, response):
yield {
"precio": response.xpath('//span[@class="price-tag-fraction"]/text()').getall(),
"titulo": response.xpath('//h2[@class="ui-row-item__title ui-row-item__group__element"]/text()').getall(),
}

Breve explicación del código:

En primer lugar se importa la librería Scrapy para poder utilizarla.

Luego, se determina la URL de donde se desea extraer los datos, y se define una función parse que se encargará de obtener dichos datos. En este caso, los datos a extraer son el título y el precio de los celulares comercializados. Para poder obtenerlos se hace uso de la notación xpath (si desean aprender más acerca de esta notación pueden acceder a la documentación oficial de la librería de Scrpay aquí).

Scrapy shell

Una forma directa de obtener los valores de los elementos a los que estamos apuntando es con scrapy shell, que permite visualizar la página a la que se está apuntando, y así poder asegurar que se está ubicado de forma correcta.

En la terminal se debe posicionar sobre la carpeta TutorialSW e ingresar el comando:

scrapy shell "https://listado.mercadolibre.com.ar/samsung"
Uso de scrapy shell

Se puede usar response(view) para ver al sitio al que se está apuntando. Esto abrirá una nueva pestaña en el navegador por defecto.

Uso de Scrapy shell

Importar los recursos

Una vez que se eligen los datos que se quieran extraer, serán exportados.

Scrapy admite muchos tipos de medios de exportación. Para hacerlo lo más sencillo posible, en el ejemplo que compete a este artículo, se creará un archivo CSV, que tendrá los precios y nombres de los celulares encontrados.

Se ingresa el siguiente comando:

scrapy crawl tutorial -o archivoPrecios.csv
Exportar datos

Y finalmente, se obtendrá un archivo como este.

Resultado final CSV

Conclusiones

En casos reales, la complejidad y cantidad de datos es mucho mayor. Sin embargo, para poder ilustrar la importancia del uso de una técnica como el webscraping, es suficiente con este pequeño y sencillo ejemplo. Lo que aquí interesa son las posibilidades que nos brinda este tipo de herramienta, ya que, a través de un script corto y simple, se pueden obtener de manera rápida los datos que importan, siendo tomados como base para después poder realizar análisis más profundos.

Esto es solo la punta del iceberg, pero las posibilidades son innumerables. Saber obtener datos confiables y valiosos puede ser de gran valor para un negocio. Existen múltiples fuentes que pueden proveer datos, como APIs públicas y Bases de Datos abiertas, pero en el caso de no contar con ellas, el webscrapping aparece como una solución útil y dinámica.

Para el caso del ejemplo expuesto anteriormente, obtener datos reales, confiables y concisos puede ayudar a una organización a conocer a sus rivales y actuar en consecuencia, siendo así más competitivos. Pueden, por ejemplo, disminuir el precio de los celulares que comercializan o realizar promociones estratégicas, basándose en lo que hacen sus oponentes.

En definitiva, webscrapping es una técnica de obtención de datos rápida y sencilla que puede ser muy beneficiosa a la hora de realizar una extracción de información, el cual constituye el primer paso de cualquier análisis de datos que se desee llevar a cabo.

Referencias bibliográficas

  1. Scrapy 2.9 documentation — Scrapy 2.9.0 documentation. (s/f). Scrapy.org. https://docs.scrapy.org/en/latest/
  2. Datademia. (2021, septiembre 6). ¿Qué es Web Scraping? Datademia. https://datademia.es/blog/que-es-web-scraping
  3. Holcombe, J. (2022, julio 25). What is web scraping? How to legally extract web content. Kinsta®; Kinsta. https://kinsta.com/knowledgebase/what-is-web-scraping/

--

--