他の記事の多くはデータの抽出方法を扱っていますが、この記事では、抽出されたデータを改良して、必要な情報のみを残す方法について説明しています。 これを行うには特別な Criteria メソッドは使用されますが、以下のすべての例では、データはHTMLテーブルから抽出されます。このデータは、データコンテンツdiv、スパン、画像などの各ソースが同じ長さである限り、さまざまなソースから抽出できます。
Criteria
以下は、この表の4つの列で構成されるこの例でスクレイピングされる表データです。 タイトル, 著者, 本の時代 および status.
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 データを削減する方法は、すべての変更を一度に1つの列に適用する必要があります。 apply メソッドは、対応するレコードを削除する必要がある他の列で使用されます。 完了したら Criteria.create() 別の列に基準を設定する前に、メソッドを呼び出す必要があります。 この理由により、 Criteria.create() 他の基準メソッドの前。
apply
Criteria.create()
この例では、ステータス列は次のもののみに制限されています 公開済み、次に Criteria.apply 他の3つの列の対応するレコードも削除され、すべての列の一貫性が保たれます。 applyメソッドは、異なる列に同じ数のレコードが含まれている場合にのみ役立つことに注意してください。
Criteria.apply
Critieriaを組み合わせて、複数の方法でデータを制限することもできます。 次の例では、次を使用して、書籍の年齢列を1歳以上5歳未満の書籍に制限しています。 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);
ここで、authors列のMikeとRachelに等しいすべてのレコードが適用メソッドによって削除され、その後、他の列から対応するレコードが削除されます。