Strumenti per acquisire e convertire il Web

Perfezionamento dei dati raschiati

Mentre molti degli altri articoli trattano di come estrarre i dati, questo articolo spiega come i dati estratti possono essere perfezionati in modo che rimangano solo le informazioni desiderate. Per fare questo lo speciale Criteria i metodi vengono utilizzati mentre in tutti i seguenti esempi i dati vengono estratti da una tabella HTML, questi dati possono essere estratti da una varietà di origini diverse purché ciascuna sorgente di div, span, immagini ecc. del contenuto dei dati abbia la stessa lunghezza.

Tabella di esempio: elenco di libri

Di seguito sono riportati i dati della tabella che vengono analizzati in questo esempio, questa tabella è composta da quattro colonne titolo, autore, età del libro e status.

titolo autore età del libro status
Come fare il giardinaggio John 5 Pubblicato
Come usare una fotocamera Sarah 0 Incompleto
Come usare una fotocamera Sarah 0 Incompleto
L'astronomia è stata facile Dominic 1 In fase di revisione
Come stirare Paul 1 In fase di revisione
Come disegnare Mike 3 Pubblicato
Come usare un PC Rachel 4 Pubblicato
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"}}});

Spesso i dati raccolti devono essere perfezionati in modo da avere solo le informazioni di cui hanno bisogno. Questo è dove il Criteria le funzioni sono utilizzate. Ad esempio, se sono richiesti solo libri pubblicati, è necessario limitare la colonna degli stati sopra a pubblicata e quindi applicare tali modifiche agli altri dati della colonna come mostrato di seguito.

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

Quando si usa Criteria metodi per ridurre i dati a cui devono essere applicate tutte le modifiche su una singola colonna alla volta, prima di apply Il metodo viene utilizzato su qualsiasi altra colonna che deve rimuovere i record corrispondenti. Una volta completato il Criteria.create() Il metodo deve essere chiamato prima di impostare i criteri per un'altra colonna. È per questo motivo che è consigliabile chiamare il Criteria.create() prima di qualsiasi altro metodo di criteri.

Nell'esempio la colonna degli stati è stata limitata a includere solo Pubblicato, quindi utilizzando il Criteria.apply metodo anche i record corrispondenti nelle altre tre colonne sono stati rimossi per mantenere coerenti tutte le colonne. Ricorda che il metodo apply è utile solo se le diverse colonne contengono lo stesso numero di record.

La critica può anche essere combinata insieme per limitare i dati in più modi. L'esempio seguente limita la colonna relativa all'età dei libri a libri più vecchi di uno ma di meno di cinque anni usando il Criteria.lessThan() e Criteria.greaterThan() metodi.

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 volte ci sono dati duplicati che devono essere rimossi, per rimuovere queste informazioni è possibile utilizzare il Criteria.unique metodo.

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

Ora tutte le righe duplicate basate sulla colonna del titolo verranno rimosse. Il prossimo metodo è il Criteria.remove metodo. Ciò rimuove gli elementi dalla colonna se tali valori di colonna vengono trovati nel parametro array.

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

Qui tutti i record che equivalgono a Mike e Rachel nella colonna degli autori vengono rimossi, il metodo apply quindi rimuove i record corrispondenti dalle altre colonne.