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