В то время как многие другие статьи посвящены тому, как извлекать данные, в этой статье объясняется, как извлеченные данные могут быть уточнены, чтобы осталась только нужная информация. Для этого особенный Criteria методы используются, в то время как во всех следующих примерах данные извлекаются из таблицы HTML, эти данные могут быть извлечены из множества различных источников, если каждый источник данных, div, интервалы, изображения и т. д. имеют одинаковую длину.
Criteria
Ниже приведены данные таблицы, которые в этом примере извлекаются из этой таблицы, состоит из четырех столбцов. название, автор, возраст книги и статус.
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"}}});
Часто очищенные данные необходимо уточнять, чтобы они имели только ту информацию, которая им необходима. Это где Criteria функции используются. Например, если требуются только опубликованные книги, вам нужно ограничить приведенный выше столбец статусов опубликованными, а затем применить эти изменения к другим данным столбца, как показано ниже.
Criteria.create(); statuses = Criteria.equals(statuses, "Published"); titles = Criteria.apply(titles); authors = Criteria.apply(authors); ages = Criteria.apply(ages);
Когда используешь Criteria методы для уменьшения данных, все изменения должны применяться к одному столбцу за один раз, до apply Метод используется в любых других столбцах, для которых необходимо удалить соответствующие записи. После завершения Criteria.create() Метод должен быть вызван до того, как критерии будут установлены для других столбцов. Именно по этой причине лучше всего называть Criteria.create() перед любыми другими критериями методов.
apply
Criteria.create()
В этом примере столбец статусов был ограничен, чтобы включать только опубликованныйзатем с помощью Criteria.apply Метод, соответствующие записи в трех других столбцах также были удалены, чтобы сохранить все столбцы согласованными. Помните, что метод apply полезен, только если разные столбцы содержат одинаковое количество записей.
Criteria.apply
Критерии также могут быть объединены вместе, чтобы ограничить данные несколькими способами. В приведенном ниже примере столбец возраста книги ограничивается книгами старше одного года, но менее пяти лет с использованием Criteria.lessThan() и Criteria.greaterThan() методы.
Criteria.lessThan()
Criteria.greaterThan()
Criteria.create(); ages = Criteria.greaterThan(ages, 1); ages = Criteria.lessThan(ages, 5); titles = Criteria.apply(titles); authors = Criteria.apply(authors); statuses = Criteria.apply(statuses);
Иногда есть повторяющиеся данные, которые необходимо удалить, чтобы удалить эту информацию, вы можете использовать Criteria.unique метод.
Criteria.unique
Criteria.create(); titles = Criteria.unique(titles); authors = Criteria.apply(authors); ages = Criteria.apply(ages); statuses = Criteria.apply(statuses);
Теперь все повторяющиеся строки, основанные на заголовке столбца, будут удалены. Следующим методом является Criteria.remove метод. Это удаляет элементы из столбца, если эти значения столбца находятся в параметре массива.
Criteria.remove
var authorsToRemove = ["Mike","Rachel"]; Criteria.create(); titles = Criteria.remove(authors, authorsToRemove); authors = Criteria.apply(titles); ages = Criteria.apply(ages); statuses = Criteria.apply(statuses);
Здесь все записи, которые равны Майку и Рэйчел в столбце авторов, удаляются методом apply, затем удаляются соответствующие записи из других столбцов.