Narzędzia do przechwytywania i konwertowania Internetu

Udoskonalanie danych zeskrobanych

Podczas gdy wiele innych artykułów dotyczy sposobu wyodrębniania danych, w tym artykule wyjaśniono, w jaki sposób można wyodrębnić wyodrębnione dane, aby pozostały tylko pożądane informacje. Aby to zrobić specjalną Criteria stosowane są metody, podczas gdy we wszystkich poniższych przykładach dane są wyodrębniane z tabeli HTML, dane te można wyodrębniać z różnych źródeł, o ile każde źródło div danych, zakresów, obrazów itp. ma tę samą długość.

Przykładowa tabela: lista książek

Poniżej znajdują się dane tabeli, które zostały zeskrobane w tym przykładzie, ta tabela składa się z czterech kolumn tytuł, autor, wiek książki i status.

tytuł autor wiek książki status
Jak uprawiać ogródek John 5 Opublikowany
Jak korzystać z aparatu Sara 0 Niekompletny
Jak korzystać z aparatu Sara 0 Niekompletny
Astronomia łatwa Dominic 1 W ramach przeglądu
Jak prasować Paweł 1 W ramach przeglądu
Jak rysować mikrofon 3 Opublikowany
Jak korzystać z komputera Rachel 4 Opublikowany
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"}}});

Często zeskrobane dane wymagają udoskonalenia, aby zawierały tylko te informacje, których potrzebują. To gdzie Criteria funkcje są używane. Na przykład, jeśli wymagane są tylko opublikowane książki, musisz ograniczyć kolumnę statusów powyżej do opublikowanych, a następnie zastosować te zmiany do innych danych kolumny, jak pokazano poniżej.

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

Podczas używania Criteria metody zmniejszania danych wszystkie zmiany muszą być zastosowane w jednej kolumnie na raz, przed apply Metoda jest używana we wszystkich innych kolumnach, które muszą mieć usunięte odpowiednie rekordy. Po zakończeniu Criteria.create() Metoda musi zostać wywołana przed ustaleniem kryteriów dla innych kolumn. Z tego powodu najlepiej jest zadzwonić pod numer Criteria.create() przed innymi metodami kryteriów.

W tym przykładzie kolumna statusów została ograniczona do uwzględnienia Opublikowany, a następnie za pomocą Criteria.apply Metoda usunięto również odpowiednie rekordy z trzech pozostałych kolumn, aby zachować spójność wszystkich kolumn. Pamiętaj, że metoda zastosuj jest przydatna tylko wtedy, gdy różne kolumny zawierają tę samą liczbę rekordów.

Kryteria można również łączyć razem, aby ograniczyć dane na wiele sposobów. Poniższy przykład ogranicza kolumnę wieku książek do książek starszych niż jeden, ale mniejszych niż pięć lat, używając Criteria.lessThan() i Criteria.greaterThan() Metody.

Criteria.create();
ages = Criteria.greaterThan(ages, 1);
ages = Criteria.lessThan(ages, 5);
titles = Criteria.apply(titles);
authors = Criteria.apply(authors);
statuses = Criteria.apply(statuses);

Czasami zduplikowane dane muszą zostać usunięte, aby usunąć te informacje, możesz użyć Criteria.unique Metoda.

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

Teraz wszelkie zduplikowane wiersze na podstawie kolumny tytułu zostaną usunięte. Następną metodą jest Criteria.remove metoda. Spowoduje to usunięcie elementów z kolumny, jeśli te wartości kolumny zostaną znalezione w parametrze array.

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

Tutaj wszystkie rekordy, które są równe Mike'owi i Rachel w kolumnie autorów, są usuwane, zastosuj metodę, a następnie usuwa odpowiednie rekordy z innych kolumn.