Avís
Aquest article és antic i és possible que part de la informació estigui desactualitzada o ja no sigui vàlida actualment.
Si tens qualsevol dubte o necessites confirmar algun detall, et recomanem contactar amb el nostre equip de suport per rebre informació actualitzada i assistència personalitzada.
Què és el Web Scraping
El Web Scraping és una tècnica per extreure informació d'una pàgina web. El seu ús permet obtenir quantitats ingents d'informació, el que s'anomena Big Data.
Per utilitzar-lo cal tenir nocions bàsiques o mitjanes d'HTML i de les etiquetes més habituals, així com de JS i CSS, en general de tecnologies web del costat del client.
Per obtenir dades d'un web cal conèixer també tecnologies web del costat del servidor, com ara PHP o NodeJS, per exemple. El Web Scraping s'ha de fer del costat del servidor, que és el que farà peticions als webs i processarà les dades. En aquesta guia es faran servir ordres bàsiques de NodeJS.
Abans de començar, cal saber que no tot el Web Scraping és legal, almenys a Espanya. Segons la justícia espanyola, aquests són els casos en què aquesta tècnica és il·legal:
- Quan vulnera els drets intel·lectuals de l'autor de la pàgina web de la qual s'extreu la informació.
- Quan hi ha competència deslleial.
- Quan viola els termes legals i les condicions d'ús del web.
- Si incompleix la normativa de protecció de dades personals, més concretament la Llei orgànica 15/1999, de 13 de desembre, de protecció de dades de caràcter personal.
Aquest apunt té una finalitat informativa, de manera que l'ús que el lector faci d'aquestes tecnologies és responsabilitat seva.
Instal·lació de NodeJS i Osmosis
Si tens Linux
Instal·lem els paquets nodejs i npm amb el gestor de paquets que tinguis instal·lat a l'equip, en el cas de Debian i derivats: `
# apt install nodejs npmUn cop instal·lat NodeJS, executa:
# npm install http osmosisSi tens Windows i MacOS
Descarrega i executa els instal·ladors de la pàgina de NodeJS: https://nodejs.org/es/download/
Creació del servidor
Creem un fitxer nou anomenat index.js i hi afegim el codi base per al servidor:
var http = require('http');
const osmosis = require('osmosis');
var server = http.createServer(function(request, response) {
response.writeHead(200, {"Content-Type": "text/plain"});
});
var port = process.env.PORT || 1337;
server.listen(port);
console.log("Server running at http://localhost:%d", port)
Creem un fitxer nou (a la mateixa carpeta que l'anterior) anomenat package.json i hi afegim el codi següent:
{
"name": "Hola Mundo",
"description": "holamundo",
"version": "0.0.1",
"private": true,
"license": "MIT",
"author": "My name",
"scripts": {
"start": "node index.js"
},
"dependencies": {
"osmosis": "^1.1.4"
}
}
on els camps es poden editar al gust excepte la part de scripts i dependències.
Ús bàsic d'Osmosis
Després de la línia response.writeHead(200, {“Content-Type”: “text/plain”}); escrivim el codi següent:
osmosis
.get('http://www.ejemplo.es') // Especifiquem l'URL de la qual volem obtenir dades
.find('#ctPMain') // Triem l'element del qual volem extreure la informació, s'escriu en format JQuery, # significa que cerquem un id anomenat "ctPMain"
.set({'elements': ['td']}) // Creem una matriu JSON amb els elements "td" extrets de l'etiqueta anterior (també en format JQuery)
.log(console.log)
.data(function(data){
datos = JSON.stringify(data); // Accions
})
.error(console.log);
response.end(datos); // Mostra en pantalla el JSON creat
Per executar-lo a la màquina es pot escriure en un terminal:
node index.jsDocumentació
Aquesta aplicació disposa d'una documentació extensa que es pot consultar a GitHub i de la qual es poden extreure grans quantitats de dades imbricant les opcions correctament.
Aquest apunt ha estat redactat per David Población Criado, estudiant d'Enginyeria Informàtica i Estadística a la Universitat de Valladolid.