viernes, 30 de abril de 2021

Desarrollar un Crawler simple con Python

 


Para poder desarrollar el Crawler con Python lo primero que debemos hacer es instalar la librería llamada scrapy. Esta librería la podemos instalar usando pip. Con esta librería ya instalada vamos a crear un documento de Python llamado simpleCrawler.py

Dentro de este documento vamos a crear una clase llamada Crawler 

import scrapy

class Crawler(scrapy.Spider):
    name = 'SimpleCrawler'
    start_urls = ['https://crawler-test.com/']

    def parse(self, response):

        links = response.xpath("//a")
        for link in links:
            link = link.xpath("@href").extract()
            print(link)
            yield

Como podemos observar lo primero que vamos tener es el import de la librería scrapy luego vamos a heredar a la clase Crawler scrapy.Spider.

En este caso el código es muy simple. Le vamos a dar un nombre al crawler con la variable name y luego le pasamos el URL que deseamos escanear con la variable start_urls.

Luego definimos una función que se llama parse que espera como parámetro el response de la carga del url.

Como podemos observar la variable links contiene todos los elementos de tipo anchor de la página que escaneamos.

Después de esto dentro del ciclo vamos encontrando cada uno de los Urls que tiene el sitio web y lo imprimimos para mostrarlo en el console.

Para poder ver el resultado debemos correr el siguiente comando scrapy runspider simpleCrawler.py

Esto nos da como resultado



Etiquetas: , , , ,

jueves, 29 de abril de 2021

Desarrollar un Crawler simple con Java

 


Lo primero que vamos a hacer es crear un proyecto nuevo basado en Maven



Al proyecto le vamos a asignar el nombre de SimpleCrawler



Le tenemos que dar al botón de finalizar. Con esto listo vamos a necesitar una librería que la tenemos que agregar al proyecto usando Maven. La librería se llama jsoup.



Jsoup Url: https://jsoup.org/download

Con esto listo ya podemos hacer el código para escanear la página web.

package com.mycompany.simplecrawler;

import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;


public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        try {
            var url = "https://crawler-test.com/";
            
            Document doc = Jsoup.connect(url).get();
            Elements links = doc.select("a[href]");
            for(Element link: links){
                System.out.println(link.attr("href"));
            }
        } catch (IOException ex) {
           System.err.println(ex);
        }
    }
    
}

Como podemos observar en el código lo primero que debemos hacer es importar las librerías de jsoup necesarias

·         import org.jsoup.Jsoup;

·         import org.jsoup.nodes.Document;

·         import org.jsoup.nodes.Element;

·         import org.jsoup.select.Elements;

Luego vamos a crear una variable llama Url donde podemos agregar la pagina que deseamos escanear. Después de esto creamos un objeto de tipo Document con el que vamos a obtener el documento encontrado del url, usando el método get que vamos a usar del método connect de la clase Jsoup.

Después de esto creamos un objeto de tipo Elements llamado links basado en la búsqueda que deseamos hacer como se puede observar con el objeto doc.select. En este caso preguntamos por todos los anchores que tengan una referencia.

Finalmente, con un ciclo for podemos recorrer el resultado de links con todas las posibles url o links que se encontraron. Finalmente se imprimen en la consola para poder ver que fue lo encontrado.

Lo que nos da como resultado lo siguiente 




Etiquetas: , ,

miércoles, 21 de abril de 2021

Desarrollar un Crawler simple con C#

 

Lo primero que tenemos que hacer es un proyecto nuevo con Visual Studio. En mi caso vamos a usar Visual Studio 2019. El proyecto lo vamos a desarrollar usando C#. Vamos a hacer un Console app el cual le vamos a llamar SimpleCrawler.



El proyecto va a hacer. netcore 3.1

Cuando el proyecto esta listo vamos a buscar en NuGet el paquete HtmlAgilityPack y lo vamos a instalar. 



Con este paquete instalado lo primero que vamos a hacer en la clase Main es importar las librerías necesarias para crear nuestro crawler


Ahora vamos a ver como se construye el código para ir navegando en el contenido de la página web. 



Ahora, en la línea 12 tenemos que copiar el URL de la página web que deseamos escanear. Con esto vamos a crear un cliente Http para leer el documento web como se puede ver en la línea 14. Ya en la línea 16 obtenemos el contenido del documento de Html. Este al final lo podemos obtener como si fuera una variable string.

Ahora si ya con esto listo en la línea 18 creamos un objeto de tipo HtmlDocument del paquete AgilityPack. El cual nos va a permitir convertir el documento que tenemos de tipo string a un objeto de tipo AgilityPack. Esto lo cargamos en la línea 19.

Para poder leer todos los links usamos la línea 21 el cual usa el document que creamos anteriormente y cargamos todos los nodos. De estos nodos que cargamos vamos a seleccionar únicamente los anchor (links).

En la línea 23 vamos a recorrer todos los resultados encontrados en la línea 21 y vamos a ir uno por uno mostrando el contenido de cada uno de estos. Usando la propiedad OuterHtml que tenemos en la línea 24.

Lo que nos da como resultado lo siguiente 



Aquí podemos ver todos los links que tiene la página web. Ahora cada uno podría hacer lo que necesita con estos links.

Podemos recordar que con este paquete podemos buscar cualquier tipo de nodo que tenemos en los sitios web.

¿Qué es un Crawler? 


Etiquetas: , , ,

sábado, 17 de abril de 2021

Bootstrapstudio

 


A la hora de hacer una aplicación existen diferentes componentes los cuales deben de ser de mucha calidad para que nuestras apps funcionen de la mejor manera. Siempre prestamos mucha atención a el diseño de la base de datos, la arquitectura de nuestras aplicaciones, etc. Y creo que todos los programadores sabemos lo importante que es el desarrollo de la interfaz gráfica.

Al final los usuarios lo único que saben y ven es la interfaz gráfica. Claro que esperan que la app sea rápida y que funcione de manera adecuada, pero uno de los aspectos más importante es que sea muy amigable con el usuario. Esto es un factor clave.

Muchos programadores no somos realmente buenos a la hora de hacer las interfaces graficas y requerimos de ayuda de diseñadores gráficos que nos brinden las ideas más modernas y una experiencia de usuario única para nuestras apps.

Puede que alguno recuerde lo que era crear interfaces de usuario desde cero usando aplicaciones de drag & drop que nos permitía de manera visual crear interfaces rápidamente. Bueno esta herramienta Boostrapstudio nos permite hacer esto.

Me parece una herramienta increíble ya que además de permitirnos la posibilidad de crear interfaces de manera visual también tiene una serie de templates o estructuras predeterminadas que podemos usar para ir construyendo nuestra aplicación.

Otra de los aspectos positivas que pude encontrar es que es muy amigable y su interfaz es sumamente fácil de usar. Tiene herramientas para ir acomodando de manera visual todos los elementos y esto genera el HTML y el css por nosotros. Pero no se limita a únicamente a esta tarea, ya que cuanta con herramientas para generar Minify de los html y javascript.

Tiene opciones para ir desarrollando componentes de SEO y puede ayudarnos a genere SASS si es que lo deseamos. Los cambios se pueden ir guardando con forme progresa el desarrollo de nuestra aplicación. Hoy en día que podemos hacer aplicaciones HTML que pueden correr como desktop, web y móviles nos da una gran facilidad para la creación de interfaces.

Cuando vamos desarrollando nuestra aplicación podemos ir viendo cómo va quedando la versión de diferentes tamaños, ya que se crea una versión responsive de nuestra app.

Esta herramienta tiene integrado Boostrap y Font awesome lo que nos permite ir agregando iconos, imágenes y los diferentes componentes de boostrap en nuestra app.

En el sitio web podemos encontrar muchos tutoriales para ver cómo utilizar la herramienta de una forma correcta y simple. además de un área donde explica todas las configuraciones y herramientas con las que cuenta la herramienta.

BoostrapStudio cuenta con dos licencias una estándar que cuesta $39 con la que se puede obtener la versión gratis por un año y la otra licencia que es LifeTime que cuesta $69 con la que se puede obtener las actualizaciones de por vida.

Personalmente me parece una excelente herramienta si estamos trabajando en el desarrollo de interfaces graficas. Se puede usar un demo gratuito en la pagina que demuestra como funciona esta herramienta. Para los que no somos tan expertos en el desarrollo gráficos nos permitirá hacer interfaces profesionales mucho mas fácil.

BoostrapStudio

Etiquetas: , , , ,