זה היה בבוקר שימשי אחד שדיברתי עם חבר שלי על העיסוק שלו בחנות האיביי שלו. טוב נו, למעשה זה היה על כוס בירה בבר אפלולי אבל תתנו לי לזרום עם הפנטזיה. בכל מקרה הבירה הזו הובילה אותי לתחום הנהדר של כריית מידע, ולהתחיל להיות כורה מידע זה נהדר, זה משלב ידע במספר ספריות נדרשות בשפה מסויימת (ממליץ על השפות – Python \ Javascript – NodeJS).

דיברנו על העיסוק של החבר והוא אמר שהוא מתעסק בDrop Shipping מאמזון לאיביי.

כשהוא הסביר לי את סדר הפעולה של העבודה שלו שזה פחות או יותר דבר כזה (אני הולך לחסוך לכם קורס שלם בנושא) –

לקחת מוצר מאמזון -> לשים אותו באיביי.

אז אמרתי לעצמי בראשי הגיקי – היי! למה שלא תוכנה לא תעשה את זה?

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

אז אחרי החפירות אני הולך לספר לכם על הרפתקאותי עם Web Scraping ברחבי האינטרנט.

זהירות פוסט טכני!

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

אז ככה.

אנחנו הולכים לעשות כריית מידע בסיסית לWikipedia באנגלית לערך של איך לא? אנג'לינה ג'ולי (לערך בויקיפדיה)

למי שרוצה לקרוא, או סתם לראות תמונה 🙂

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

נתחיל ללכלך את הידיים ולכתוב קוד.

ואני אתחיל מPython ולמעשה היא כרגע המועדפת עלי במספר תחומים ואני עושה בה שימוש נרחב בפרויקטים אישיים חוץ מכריית מידע. אני אציג דוגמא שתלך לדף של Wikipedia לערך של אנג'לינה ותשלוף משם את הכותרת. שימו לב שמדובר בPython 3 ולא בגירסא 2.7 שהיא עדיין מעט נפוצה יותר.

Web Scaping באמצעות Python

התקנה של חבילות beatifulsoap4 ו- requests לטובת העבודה שלנו.

ועכשיו לקוד המלא, אחר כך נסביר חלק אחרי חלק מה עשינו פה –

יצירת Session חדש מול העמוד המתבקש –

קריאת הקישור באמצעות BeatifulSoup –

פיענוח המידע והדפסה למסך באמצעות המטודות של הספריה BeatifuleSoup נעשה שימוש בדוגמא ב.find ניתן להשתמש גם בfindAll כאשר רוצים למצוא מספר ערכים.

 

Web Scaping באמצעות NodeJs

התקנת חבילות נדרשות – cheerio.

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

הסבר קצרצר על הקוד שלנו

טעינה של הספריות שנעשה בהם שימוש cheerio שהתקנו מוקדם יותר וrequest.

הגדרת הפונקציה וטעינה של הHTML מדף הWIKI. זו השורה הקריטית שבה אנחנו כורים את המידע –

פשוט לא? 🙂

בואו נדפיס את התוצאות, או במקרה שישנם שגיאות –

זהו!

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

במה הייתי בוחר?

למעשה זה תלוי, אם הפרויקט היה דורש פיתוח מהיר הייתי שוקל לבחור בNodeJs למשימה, ואילו במידה והייתי מעוניין לבחור במשהו "יציב" מעט יותר הייתי הולך על Python + BeautifulSoup מהסיבה שהספריה ותיקה יותר וPython 3 נכון לזמן כתיבת מאמר זה מחזיקה בספריות רבות שאיתן אתם יכולים לפתח המון דברים מסביב. כמובן במידה והפרויקט הוא רציני יותר נחשפים לאתגרים מעניינים כמו חסימות של האתרים מפני סקראפרים בעיקר אתרים גדולים עושים את זה כמו גוגל או אמזון אבל מי שיגיע לזה שישלח לי הודעה בטופס האישי ואני אשמח לענות על שאלות.

המון הצלחה.

UP