יום חמישי, 8 בדצמבר 2022

מעט על סקרייפינג ופייתון

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

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



פייתון היא שפה מאוד נוחה לביצוע סקרייפינג. יש לה מגוון כלים מעולים לנושא. כדאי שנבצע הבחנה בין פעולת הסקריפיינג עצמה (לדוגמה ניתוח של דף הבית באתר חדשות, כדי לשלוף את כל הכותרות) לבין פעולת הקראולינג, שתי פעולות שלעיתים רבות הולכות ביחד אבל הן מתארות דבר אחר. 

הקראולר בבסיס הוא קטע קוד שמתחיל מדף מסוים, נניח דף הבית של חנות אונליין, הסקרייפר מנתח את הדף והקראולר יהיה אחראי על מעבר לדפים אחרים באתר על מנת לאסוף מידע גם מהם (לרוב הלינקים יגיעו דרך פעולת הסקרייפינג).


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


נניח ואנחנו רוצים לבצע סקרייפינג של דף הבית של ynet לשליפה של הכותרות של ארבעת כותרות המשנה: 




הנה קוד שעושה את זה:

 הורדת הקוד


השלבים שבוצעו הם:

1. טעינה של דף הבית של ynet  באמצעות שימוש בספריית requests של פייתון (שורה 6) 

2. זיהוי את ה selector שמתאר את המקום ב HTML שאותו אנחנו רוצים לשלוף. את הזיהוי אפשר לעשות דרך התבוננות בקוד המקור, נדרש ידע בסיסי במהו selector וכמובן ב html.

במקרה שלנו, הסלקטור הנבחר הוא: h2.slotTitle span - כלומר תחת התגית h2 שיש לה קלאס slotTtile ניקח את ה התגית span. 

3. שימוש  ב beutyfullsoip , ספריית פייתון שמאפשרת לנו לפלטר באמצעות ה selector את האלמנטים הרצויים בדף.

4. שימוש בספריה Beautiful Soup לפילטור של האלמנטים הרלוונטיים בלבד (שורה 10) ומתוכם נפלטר את את הטקסט בלבד (שורה 16)

5. מכאן השימוש הוא כיד הדימיון ובהתאם לצורך. 


לסיכום:

זה כל מה שאנחנו צריכים כדי לכתוב פונקציה הכי בסיסית שאפשר לשליפת טקסט מתוך אלמנטים בדף. 
אך זו רק ההתחלה, יש עוד המון דברים שצריך ללמוד בנושא, בין היתר נושאים הקשורים לסקייל (שליפה של מאות ואלפי דפים), עבודה מול דפים שנדרשת הזדהות מולם (login) , עבודה מול אתרים דינמיים יותר ועוד. 





אין תגובות:

הוסף רשומת תגובה