Alors que de nombreux autres articles traitent de la façon d'extraire des données, cet article explique comment affiner les données extraites pour ne conserver que les informations souhaitées. Pour ce faire la spéciale Criteria
les méthodes sont utilisées alors que dans tous les exemples suivants, les données sont extraites d'un tableau HTML, ces données peuvent être extraites de différentes sources à condition que chaque source de données divs, span, images, etc. de contenu contienne la même longueur.
Ci-dessous, les données de la table en cours de grattage dans cet exemple. Cette table est composée de quatre colonnes. titre, auteur, âge du livre et Commande.
titre | auteur | âge du livre | Commande |
---|---|---|---|
Comment jardiner | John | 5 | Publié le |
Comment utiliser une caméra | Sarah | 0 | Couverture |
Comment utiliser une caméra | Sarah | 0 | Couverture |
L'astronomie rendue facile | Dominic | 1 | À l'étude |
Comment repasser | paul | 1 | À l'étude |
Comment dessiner | Michel | 3 | Publié le |
Comment utiliser un PC | Rachel | 4 | Publié le |
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"}}});
Les données récupérées doivent souvent être raffinées pour ne disposer que des informations nécessaires. C'est là que le Criteria
les fonctions sont utilisées. Par exemple, si seuls des livres publiés sont requis, vous devez limiter la colonne des statuts ci-dessus à publié, puis appliquer ces modifications aux autres données de colonne, comme indiqué ci-dessous.
Criteria.create(); statuses = Criteria.equals(statuses, "Published"); titles = Criteria.apply(titles); authors = Criteria.apply(authors); ages = Criteria.apply(ages);
Lors de l'utilisation Criteria
méthodes de réduction des données, toutes les modifications doivent être appliquées à une seule colonne à la fois, avant la apply
La méthode est utilisée sur toutes les autres colonnes pour lesquelles les enregistrements correspondants doivent être supprimés. Une fois terminé le Criteria.create()
La méthode doit être appelée avant que les critères ne soient définis pour d'autres colonnes. C’est pour cette raison que la meilleure pratique consiste à appeler le Criteria.create()
avant toute autre méthode de critère.
Dans l'exemple, la colonne des statuts a été restreinte pour inclure uniquement Publié le, puis en utilisant le Criteria.apply
méthode, les enregistrements correspondants dans les trois autres colonnes ont également été supprimés pour conserver la cohérence de toutes les colonnes. N'oubliez pas que la méthode apply n'est utile que si les différentes colonnes contiennent le même nombre d'enregistrements.
Les critiques peuvent également être combinées pour limiter les données de plusieurs manières. L’exemple ci-dessous limite la colonne d’âge du livre aux livres de plus d’un an mais de moins de cinq ans en utilisant le code suivant. Criteria.lessThan()
et Criteria.greaterThan()
méthodes.
Criteria.create(); ages = Criteria.greaterThan(ages, 1); ages = Criteria.lessThan(ages, 5); titles = Criteria.apply(titles); authors = Criteria.apply(authors); statuses = Criteria.apply(statuses);
Il est parfois nécessaire de supprimer les données en double. Pour supprimer ces informations, vous pouvez utiliser le Criteria.unique
méthode.
Criteria.create(); titles = Criteria.unique(titles); authors = Criteria.apply(authors); ages = Criteria.apply(ages); statuses = Criteria.apply(statuses);
Désormais, toutes les lignes en double basées sur la colonne de titre seront supprimées. La méthode suivante est la Criteria.remove
méthode. Cela supprime les éléments de la colonne si ces valeurs de colonne sont trouvées dans le paramètre array.
var authorsToRemove = ["Mike","Rachel"]; Criteria.create(); authors = Criteria.remove(authors, authorsToRemove); titles = Criteria.apply(titles); ages = Criteria.apply(ages); statuses = Criteria.apply(statuses);
Ici, tous les enregistrements égaux à Mike et Rachel dans la colonne authors sont supprimés de la méthode apply, puis suppriment les enregistrements correspondants des autres colonnes.