Supongamos que estamos leyendo algún contenido de una fuente como sitios web y queremos guardar esos datos en nuestro dispositivo. Podemos copiar los datos en un cuaderno o bloc de notas para reutilizarlos en futuros trabajos. De esta manera, usamos scraping (si no teníamos una fuente o base de datos, el formulario bruto elimina los datos en documentos, sitios y códigos).
Pero ahora existen muchas herramientas para raspar un sitio. Sin embargo, este ejemplo fue elegir Scrapy para raspar el sitio de Python. Scrapy es un marco que extrae estructuras de datos o información de las páginas.
Instalación
En primer lugar tenemos que comprobar la instalación del editor python, scrapy y vscode o similar en nuestro ordenador. Después de eso, podemos elegir dos formas de iniciar el proyecto. Al principio, un entorno virtual operativo (en python venv o entorno virtual es un entorno de desarrollo), mientras que en el otro método no se utiliza un entorno virtual.
Con venv: en este caso, se usó la fuente de comando para ingresar al modo venv e instalar scrapy en este modo.
comando que instala python –> sudo pacman -S python
comando que instala vs-code –> sudo pacman -S code
comando que instala scrapy en la computadora -> sudo pacman -S scrapy
comando para crear un ambiente de desarrollo –> python3.9 -m venv venv
comando para ejecutar o abrir el entorno de desarrollo -> source venv/bin/activate
comando que instala scrapy en paquetes de python en el ambiente de desarrollo -> pip install scrapy
Sin venv: Para la aplicación se utilizaron los comandos pip, pacman para la construcción de los paquetes.
comando que instala python –> sudo pacman -S python
comando que instala vs-code –> sudo pacman -S code
comando que instala scrapy en la computadora -> sudo pacman -S scrapy
comando que instala scrapy en paquetes de python -> pip install scrapy
Empezando
En esta parte, después de la instalación de scrapy, debe elegir un local en su computadora para crear un proyecto Scrapy, abrir la terminal y escribir el comando scrapy startproject [nombre del proyecto], que crea el proyecto scrapy.
Con venv y Sin venv:
Comando qué proyecto inicial en scrapy -> scrapy startproject example_gfg
Después de crear la ruta del proyecto, son necesarios para ingresar en él.
comando cd para entrar en la ruta de los proyectos -> cd example_gfg
En el proyecto hay un camino llamado arañas. Según documentación, crean las arañas a las que realizan raspado en sitios.
Cada araña tiene un nombre, start_url y métodos de función.
cd example_gfg/example_gfg/spiders
Python3
import scrapy class python_Spider(scrapy.Spider): name = "" start_urls = []
De acuerdo con el código anterior, que extrae en el sitio Python: los eventos a lo largo del año, el nombre de la araña es python_events y la URL de inicio (en el nombre de la araña y la URL de inicio, podemos cambiar).
Python3
import scrapy class python_Spider(scrapy.Spider): name = "geeksforgeeks_article" start_urls = [ 'https://www.geeksforgeeks.org/data-structures/?ref=shm', ] def parse(self, response):
Usamos el método parse y llamamos a esta función, esta función se usa para extraer datos de los sitios, sin embargo, para raspar los sitios es necesario comprender el selector de respuesta de comando CSS y XPath.
- Solicitud: Es una solicitud que realiza una llamada de objetos o datos.
- Respuesta: Obtiene respuesta a la Solicitud.
- Selector: Representa un método que consiste en seleccionar una parte o etiqueta en Html de un sitio para su extracción.
- Scrapy utiliza dos métodos para seleccionar:
- XPath: Es un lenguaje de búsqueda navegado en documentos que utilizan etiquetas.
- CSS: Son hojas de estilo en cascada, que buscan etiquetas en id o class en HTML.
En este ciclo, usamos yield (yield es una reserva de palabras en Python que es similar a una función detenida temporalmente o congelada) para crear un diccionario con el nombre, la fecha y el enlace de los eventos.
Python3
import scrapy class python_Spider(scrapy.Spider): name = "python_events" start_urls = [ 'https://www.python.org/blogs/', ] def parse(self, response): for item in response.css('ol'): yield { 'title': item.css('a::text').get(), 'link': item.css('a::attr(href)').get(), }
Proyecto de prueba con Scrapy Shell
Scrapy tenía un shell con selector de comando CSS probado.
Sin venv y Con venv:
scrapy shell "https://www.geeksforgeeks.org/data-structures/?ref=shm" response.css("a").get() response.css("title").get() response.css("title::text").get() response.css("a::text").get() response.css("a::attr(href)").get()
Demostración
- Producimos el código y probamos un shell scrapy.
- Ejecutamos el código o la araña.
- Lo dividimos en dos formas para desarrollar el proyecto, sin venv o con venv.
Sin venv: debemos ingresar la ruta del proyecto o araña para ejecutar el comando.
scrapy crawl geeksforgeeks_article
Con venv : Podríamos ejecutar el comando en cualquier ruta si estamos en modo venv.
scrapy crawl geeksforgeeks_article
Podemos almacenar los datos en un archivo, con los siguientes comandos:
scrapy crawl geeksforgeeks_article -O geeksforgeeks_article.csv
o
scrapy crawl geeksforgeeks_article -o geeksforgeeks_article.csv
O (crear e insertar en un nuevo archivo de datos) y o (crear y agregar en un nuevo archivo de datos) son comandos para crear un nuevo archivo e insertar.
Salidas:
Publicación traducida automáticamente
Artículo escrito por raulbrunolima y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA