Herramientas para capturar y convertir la web

Refinación de datos raspados

Si bien muchos de los otros artículos tratan sobre cómo extraer datos, este artículo explica cómo se pueden refinar los datos extraídos para que solo quede la información deseada. Para hacer esto el especial Criteria los métodos se utilizan mientras que en todos los ejemplos siguientes los datos se extraen de una tabla HTML, estos datos se pueden extraer de una variedad de fuentes diferentes siempre que cada fuente de contenido de datos divs, spans, images, etc. sea de la misma longitud.

Tabla de ejemplo: lista de libros

A continuación se muestran los datos de la tabla que se raspan en este ejemplo. Esta tabla consta de cuatro columnas. título, autor, edad del libro y estado.

título autor edad del libro estado
Cómo cultivar un huerto Juan 5 Publicado
Cómo usar una cámara Sarah 0 Incompleto
Cómo usar una cámara Sarah 0 Incompleto
Astronomía hecha fácil Dominic 1 Bajo revisión
Cómo planchar paul 1 Bajo revisión
Como dibujar micro 3 Publicado
Cómo usar una PC Rachel 4 Publicado
var titles = Page.getTagValues({"position":1,"tag":{"equals":"td"},"parent":{"tag":{"equals":"tr"}}});
var authors = Page.getTagValues({"position":2,"tag":{"equals":"td"},"parent":{"tag":{"equals":"tr"}}});
var ages = Page.getTagValues({"position":3,"tag":{"equals":"td"},"parent":{"tag":{"equals":"tr"}}});
var statuses = Page.getTagValues({"position":4,"tag":{"equals":"td"},"parent":{"tag":{"equals":"tr"}}});

A menudo, los datos raspados deben ser refinados para que solo tengan la información que requieren. Aquí es donde el Criteria Se utilizan funciones. Por ejemplo, si solo se requieren libros publicados, deberá restringir la columna de estado anterior a publicada y luego aplicar esos cambios a los datos de la otra columna como se muestra a continuación.

Criteria.create();
statuses = Criteria.equals(statuses, "Published");
titles = Criteria.apply(titles);
authors = Criteria.apply(authors);
ages = Criteria.apply(ages);

Cuando usas Criteria Los métodos para reducir los datos deben aplicarse a todos los cambios en una sola columna a la vez, antes de apply El método se utiliza en cualquier otra columna que tenga que eliminar los registros correspondientes. Una vez completado el Criteria.create() Se debe llamar al método antes de establecer los criterios para otras columnas. Es por esta razón que es una buena práctica llamar al Criteria.create() antes de cualquier otro método criterio.

En el ejemplo, la columna de estado se ha restringido para incluir solo Publicado, luego usando el Criteria.apply m√©todo los registros correspondientes en las otras tres columnas tambi√©n se han eliminado para mantener todas las columnas consistentes. Recuerde que el m√©todo de aplicaci√≥n solo es √ļtil si las diferentes columnas contienen el mismo n√ļmero de registros.

Los criterios tambi√©n se pueden combinar para restringir los datos de varias maneras. El siguiente ejemplo restringe la columna de edad del libro a los libros de m√°s de uno pero menos de cinco a√Īos utilizando el Criteria.lessThan() y Criteria.greaterThan() m√©todos.

Criteria.create();
ages = Criteria.greaterThan(ages, 1);
ages = Criteria.lessThan(ages, 5);
titles = Criteria.apply(titles);
authors = Criteria.apply(authors);
statuses = Criteria.apply(statuses);

A veces hay datos duplicados que deben eliminarse, para eliminar esta información puede usar el Criteria.unique método.

Criteria.create();
titles = Criteria.unique(titles);
authors = Criteria.apply(authors);
ages = Criteria.apply(ages);
statuses = Criteria.apply(statuses);

Ahora se eliminarán las filas duplicadas basadas en la columna de título. El siguiente método es el Criteria.remove método. Esto elimina elementos de la columna si esos valores de columna se encuentran en el parámetro de matriz.

var authorsToRemove = ["Mike","Rachel"];
Criteria.create();
titles = Criteria.remove(authors, authorsToRemove);
authors = Criteria.apply(titles);
ages = Criteria.apply(ages);
statuses = Criteria.apply(statuses);

Aquí, todos los registros que sean iguales a Mike y Rachel en la columna de autores se eliminan, el método de aplicación luego elimina los registros correspondientes de las otras columnas.