כלים ללכידה ולהמרה של האינטרנט

זיקוק נתונים מגרדים

בעוד שרבים מהמאמרים האחרים עוסקים כיצד לחלץ נתונים, מאמר זה מסביר כיצד ניתן לעדן את הנתונים שחולצו כך שרק המידע הרצוי נשאר. לשם כך המיוחד Criteria נעשה שימוש בשיטות כאשר בכל הדוגמאות הבאות הנתונים מופקים מטבלת HTML, ניתן יהיה לחלץ נתונים אלה ממגוון מקורות שונים כל עוד כל מקור של חלוקת תוכן נתונים, פרסים, תמונות וכו 'הוא באורך זהה.

טבלה לדוגמא: רשימת ספרים

להלן נתוני הטבלה שגורסים בדוגמה זו טבלה זו מורכבת מארבע עמודות כותרת, מחבר, גיל הספר ו מצב.

כותרת מחבר גיל הספר מצב
איך לגן ג'ון 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 שיטה הרשומות המתאימות בשלוש העמודות האחרות הוסרו גם הן כדי לשמור על כל העמודות עקביות. זכור ששיטת היישום מועילה רק אם העמודות השונות מכילות אותו מספר רשומות.

ניתן לשלב גם קריטריונים כדי להגביל את הנתונים במספר דרכים. הדוגמה הבאה מגבילה את טור גיל הספר לספרים שגילם אחד, אך פחות מחמש שנים, באמצעות הכיתוב 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();
titles = Criteria.remove(authors, authorsToRemove);
authors = Criteria.apply(titles);
ages = Criteria.apply(ages);
statuses = Criteria.apply(statuses);

כאן כל הרשומות שמשוות את מייק ורחל בעמודת המחברים מוסרות את שיטת היישום ואז מסירה את הרשומות המתאימות מהעמודות האחרות.