logo


פרק 5: עיבוד וניתוח של עמודי רשת

ניתוח תכונות בקלות

ניתוח התג <TITLE> היה קל במיוחד כיוון שזהו תג פשוט ללא תכונות נוספות (attribute). אולם, תגים רבים מכילים תכונות משתנות וחיוניות לניתוח שלנו. הבא נתבונן, למשל, בתג ה<META> אשר לו שתי תכונות NAME ו CONTENT. באופן כללי, התג META עשוי להראות כך:

<META 
	 NAME="Keywords" 
	 CONTENT="food,cuisine,cooking,recipes">

הבא נדמיין לעצמנו מצב בו אנו רוצים לנתח את הקוד לקבלת מילות המפתח שלו (meta keywords). כיוון שהתג <META> מכיל מידע נוסף פרט ל keywords (למשל, מחבר, תאור, זכויות יוצרים וכו'), איננו יכולים לשלוף את ה<META> הראשון שנפגוש, אלא יש לנו צורך בניתוח של כל תכונת NAME של ה<META> על למציאת התג "Keywords" - ורק במצב זה נוכל לכרות את המידע שאנו מחפשים משדה ה CONTENT.

sub parse_meta_keywords{
#parse and output meta data
$parser=HTML::TokeParser->new(\$webPage);
while (my $token=$parser->get_tag("meta"))
 { if ($token->[1]{name}=~/keywords/i)
    { print "<p><h2>Meta Keywords</h2> ".
            $token->[1]{content}."</p>" }
 }
}

גם הפעם, אתחלנו את ה TokeParser לתחילת המסמך המוכל ב webPage$. לולאת ה while מוודא שה TokeParser יעבור על כל תגי ה <META> המצויים במסמך, ולא רק על הראשון. ונבצע בדיקה עבור כל תג, האם הוא התג "Keyword". אומנם לא אמור להיות יותר מתג אחד כזה, ויכולנו להפסיק את הבדיקה אחרי שמצאנו את התג הראשון, אך ישנה אפשרות שמישהו הכניס כמה תגי Keywords לתוך מסמך בודד, בגלל רשלנות.

מתודת ה ()get_tag של ה TokeParser שולפת את תג ה<META> הבא שהיא מוצאת, ומכניסה את רכיביו השונים לתוך המערך token$. פניה למערך יכולה להיות מאוד מבלבלת, והתחביר שלה יכול להיות משונה ביותר. לפיכך, מוטב לא לחשוב על המדוע, ולהתמקד באיך - אתם יכולים פשוט להעתיק קוד זה לתוך התוכנית שלכם ולא לסבך את עצמכם בסיבות שבגללם הקוד נראה איך שהוא נראה.

די אם נאמר, שאנו יכולים לגשת לתכונות של התג כמו לטבלת האש של [token->[1 $. משמע ש {token->[1]{name$ מחזירה את ערך שדה הNAME בתג. פניה דומה ל {token->[1]{content$ תחזיר את תוכן שדה ה CONTENT, אתם יכולים להרחיב זאת לכל תג אותו אתם מנתחים.

בדוגמה שלנו אנו בודקים אם שדה ה NAME שלנו מכיל את המילה "Keywords" (בלי הבדל בין אותיות גדולות לקטנות). אם כן תוכן תכונת ה CONTENT מודפס למסך; אחרת זהו אינו התג META Keywords ולכן נמשיך לתג ה <META> הבא, עד לסיום הניתוח.

TokeParser :חישוב המחיר
תוכן עניינים
השיטה היא לנתח: מסכם עמודי רשת

אודות
תוכן עניינים
פרק 1: ה Perl שאתם צריכים לדעת
פרק 2: קישור Perl לעמודי הרשת
פרק 3: שמירת מצב
פרק 4: HTML בחטף ותבניות (Templates) רשת
פרק 5: עיבוד וניתוח של עמודי רשת
מטרה פשוטה: קוד כמו שסבתא נהגה להכין  
פשוט, LWP:Simple  
רודפים אחרי תגים  
שליפת תגיות בלי מאמץ: TokeParser  
ניתוח תכונות בקלות  
השיטה היא לנתח: מסכם עמודי רשת  
פרק 6: להשתעשע עם בסיסי נתונים מקוונים:אקסס
פרק 7: המודל MySQL
פרק 8: להשתעשע בבסיסי נתונים - GUFE - החזית הכללית והשימושית
פרק 9: המילניום - ניהול זמן ותאריך
פרק 10: ניהול רשימות והאשים (Hashs)
פרק 11: הפניה להפניה
פרק 12: הכרות עם mod_perl