/scrappy

Primary LanguageCMIT LicenseMIT

✗

Scrappy: Compilador orientado a web scrapping mediante Puppeteer

Un compilador que permite al usuario realizar operaciones básicas de web scrapping con agilidad construido con Flex y Bison.

Requerimientos

Para construir el compilador, se requieren las siguientes dependencias:

Si en lugar de trabajar con un entorno Linux, se está construyendo el proyecto sobre un entorno Microsoft Windows, se debe instalar Microsoft Visual Studio 2022 con las extensiones para desarrollar aplicaciones en C/C++, así como también las herramientas requeridas, con excepción del compilador GCC y la herramienta Make.

Construcción

Para construir el proyecto por completo, ejecute en la raíz del repositorio los siguientes comandos (en Linux):

user@machine:path/ $ chmod u+x --recursive script
user@machine:path/ $ script/build.sh

En un entorno Microsoft Windows, en cambio, se debe ejecutar:

user@machine:path/ $ script\build.bat

Luego se deberá abrir la solución generada bin\Compiler.sln con el IDE Microsoft Visual Studio 2022. Los ejecutables que este sistema construye se depositan dentro del directorio bin\Debug y bin\Release, según corresponda.

Ejecución

Para compilar un programa, primero cree un archivo vacío denominado program (o el nombre que desee), con el contenido válido para el lenguaje definido. Por ejemplo:

var root Downloads;
var sf series;

from { 
    url https://es.wikipedia.org/wiki/Neon_Genesis_Evangelion; 
    url https://es.wikipedia.org/wiki/Hideaki_Anno;
}

retrieve { 
    div id mw-normal-catlinks;
    a;
    h1;
    img;
}

to { 
    $root/$sf/evangelion;
    $root/$sf; 
}

o

from { 
    url https://campus.itba.edu.ar/ultra/courses/_27584_1/outline;
}

retrieve { 
    html;
    img;
}

to { 
    Facultad/campus;
}
auth {
    username campus_username;
    password campus_password;
}

Se debe reemplazar el usuario y constraseña del ejemplo por credenciales válidas de campus, en caso contrario al ejecutar el archivo de JavaScript generado no funcionará.

Luego, ejecute el compilador desde el directorio raíz del proyecto, o desde cualquier otro lugar indicando el path hacia el script start.sh y pasando por parámetro el path hacia el programa a compilar:

user@machine:path/ $ script/start.sh program

En Windows:

user@machine:path/ $ script\start.bat program

Debería obtener un archivo titulado scrappy.js.

Ejecución del archivo generado

A continuación una breve guía para ejecutar los archivos generados:

Primero será necesario descargar e instalar Node.js desde su sitio oficial.

Luego, desde el directorio en el cual se encuentra el archivo generado:

npm init -y

En caso de no haber sido descargada prevuamente la librería de Puppeteer:

npm install puppeteer

Finalmente, para correr el script archivo generado:

node scrappy.js

Testing

En Linux:

user@machine:path/ $ script/test.sh

En Windows:

user@machine:path/ $ script\test.bat

Si desea agregar nuevos casos de uso, deberá crear un archivo por cada uno, que contenga el programa a testear dentro de las carpetas test/accept o test/reject según corresponda (es decir, si el mismo debe ser aceptado o rechazado por el compilador).