ישנן מספר ספריות ומסגרות של Python לחילוץ נתונים מהאינטרנט. כולם מתחילים עם כלי מסוים עד שהם מבינים שהוא אולי לא הכי מתאים לפרויקט הבא שלהם. למרות שזה מאוד לא סביר שתשתמש בכל הכלים של Python בפרויקט אחד, אתה צריך לדעת אילו מהם לשמור בהישג יד בארגז הכלים שלך לגירוד אתרים.
להלן ספריות Python, מסגרות וכלים אחרים הטובים ביותר שיעזרו לך לגרד נתונים מהאינטרנט, ללא מאמץ.
1. מרק יפה
מתחילים את הרשימה עם ספריית גירוד האינטרנט הטובה ביותר למתחילים: מרק יפה. זהו בעצם כלי המחלץ נתונים מקובצי HTML ו-XML ממנותחים על ידי הפיכת המסמך לאובייקט Python.
ה"יופי" של מרק יפה טמון בפשטותו. זה קל להגדיר ואתה יכול התחל עם פרויקט גירוד האינטרנט הראשון שלך תוך דקות. מרק יפה משתמש בגישה היררכית לחילוץ נתונים ממסמך HTML. אתה יכול לחלץ אלמנטים באמצעות תגים, מחלקות, מזהים, שמות ותכונות HTML אחרות.
עם זאת, לצפות ליותר ממרק יפה יהיה לקחת את זה רחוק מדי. אין תמיכה מובנית בתוכנות ביניים ופונקציונליות מתקדמות אחרות כגון סיבוב פרוקסי או ריבוי השחלות. עם מרק יפה, אתה צריך ספריות כדי לשלוח בקשות HTTP, לנתח את המסמך שהורד ולייצא את המידע שגרד לקובץ פלט.
2. בקשות
בקשות היא ללא ספק ספריית Python הנפוצה ביותר לטיפול בבקשות HTTP. הכלי עומד בשורה התווית שלו: HTTP for Humans™. הוא תומך במספר סוגי בקשות HTTP, החל מ-GET ו-POST ל-PATCH ומחק. לא רק זה, אתה יכול לשלוט כמעט בכל היבט של בקשה, כולל כותרות ותגובות.
אם זה נשמע קל, היה סמוך ובטוח מכיוון שבקשות נותנות מענה גם למשתמשים מתקדמים עם שלל התכונות שלו. אתה יכול לשחק עם בקשה ולהתאים אישית את הכותרות שלה, להעלות קובץ לשרת באמצעות POST, ולטפל בתקופת זמן קצוב, הפניות מחדש והפעלות, בין היתר.
בקשות משויכות בדרך כלל ל- Beautiful Soup בכל הנוגע לגרידת רשת, שכן למסגרות אחרות של Python יש תמיכה מובנית לטיפול בבקשות HTTP. כדי לקבל את ה-HTML עבור דף אינטרנט, תשתמש בבקשות לשליחת בקשת GET לשרת, ואז תחלץ את נתוני הטקסט מהתגובה ותעביר אותם למרק יפה.
3. סקרפי
כפי שהשם מרמז, Scrapy היא מסגרת Python לפיתוח מגרדי אינטרנט בקנה מידה גדול. זה האולר השוויצרי לחלץ נתונים מהרשת. Scrapy מטפל בכל דבר, החל משליחת בקשות והטמעת פרוקסי ועד לחילוץ וייצוא נתונים.
בניגוד למרק יפה, הכוח האמיתי של סקרפי הוא המנגנון המתוחכם שלו. אבל אל תתנו למורכבות הזו להפחיד אתכם. Scrapy היא מסגרת גירוד האינטרנט היעילה ביותר ברשימה זו, מבחינת מהירות, יעילות ותכונות. זה מגיע עם בוררים המאפשרים לבחור נתונים ממסמך HTML באמצעות רכיבי XPath או CSS.
יתרון נוסף הוא המהירות שבה Scrapy שולח בקשות ומחלץ את הנתונים. הוא שולח ומעבד בקשות באופן אסינכרוני, וזה מה שמבדיל אותו מכלי גירוד אינטרנט אחרים.
מלבד התכונות הבסיסיות, אתה מקבל גם תמיכה בתוכנות ביניים, שהיא מסגרת של ווים שמזריקה פונקציונליות נוספת למנגנון ה-Scrapy המוגדר כברירת מחדל. אתה לא יכול לגרד אתרים מונעי JavaScript עם Scrapy מחוץ לקופסה, אבל אתה יכול להשתמש בתוכנות ביניים כמו scrapy-selenium, scrapy-splash ו-scrapy-scrapingbee כדי ליישם את הפונקציונליות הזו בפרויקט שלך.
לבסוף, כשתסיים לחלץ את הנתונים, תוכל לייצא אותם בפורמטים שונים של קבצים; CSV, JSON ו-XML, אם להזכיר כמה.
Scrapy היא אחת הסיבות הרבות לכך ש-Python היא שפת התכנות הטובה ביותר עבור כל מי שעוסק בגרידת אינטרנט. הגדרת פרויקט Scrapy הראשון שלך יכול לקחת קצת זמן, במיוחד אם אין לך ניסיון עם שיעורים ומסגרות של Python. זרימת העבודה של Scrapy מופרדת למספר קבצים ולמתחילים, זה עשוי להיראות כמו מורכבות לא רצויה.
4. סֵלֶנִיוּם
אם אתה מחפש לגרד תוכן דינמי, המועבר ב-JavaScript, אז סלניום הוא מה שאתה צריך. כמסגרת בדיקות אינטרנט חוצת פלטפורמות, Selenium עוזרת לך לעבד HTML, CSS ו-JavaScript ולחלץ את מה שנדרש. אתה יכול גם לחקות אינטראקציות משתמש אמיתיות על ידי קידוד קשיח של פעולות מקלדת ועכבר, המהווה מחליף משחק מלא.
סלניום מולידה מופע של דפדפן באמצעות מנהל ההתקן של האינטרנט וטוען את הדף. כמה דפדפנים פופולריים הנתמכים על ידי Selenium הם Google Chrome, Mozilla Firefox, Opera, Microsoft Edge, Apple Safari ו-Internet Explorer. הוא משתמש באיתור CSS ו-XPath, בדומה לבוררי Scrapy, כדי למצוא ולחלץ תוכן מרכיבי HTML בדף.
אם אינך מנוסה ב-Python אך מכיר שפות תכנות אחרות, תוכל להשתמש בסלניום עם C#, JavaScript, PHP, Perl, Ruby ו-Java.
המגבלה היחידה היא מכיוון שסלניום משיקה דפדפן אינטרנט ברקע, המשאבים הנדרשים לביצוע המגרד גדלים באופן משמעותי, בהשוואה ל-Scrapy או Beautiful Soup. אבל בהתחשב בתכונות הנוספות שמביאה סלניום לשולחן, זה מוצדק לחלוטין.
5. urllib
ספריית Python urllib היא כלי פשוט אך חיוני שיש בארסנל גירוד האינטרנט שלך. זה מאפשר לך לטפל ולעבד כתובות אתרים בסקריפטים של Python שלך.
יישום מעשי מתאים של urllib הוא שינוי כתובת URL. שקול שאתה מגרדת אתר עם מספר דפים ועליך לשנות חלק מכתובת האתר כדי להגיע לדף הבא.
urllib יכול לעזור לך לנתח את כתובת האתר ולחלק אותה למספר חלקים, שאותם תוכל לשנות ולבטל את הניתוח כדי ליצור כתובת URL חדשה. בעוד ששימוש בספרייה לניתוח מחרוזות עשוי להיראות כמו מוגזם, urllib הוא מציל חיים עבור אנשים שמקודדים מגרדי אינטרנט בשביל הכיף ולא רוצים להיכנס למבני נתונים.
כמו כן, אם ברצונך לבחון את ה-robots.txt של אתר אינטרנט, שהוא קובץ טקסט המכיל כללי גישה עבור הסורק של Google ומגרדים אחרים, urllib יכול לעזור לך גם בכך. מומלץ לעקוב אחר ה-robots.txt של אתר אינטרנט ולגרד רק את הדפים המותרים.
6. ספריות JSON, CSV ו-XML
מכיוון שלמרק יפה או סלניום אין תכונות מובנות לייצוא הנתונים, תזדקק לספריית Python כדי ייצא את הנתונים ל-JSON, קובץ CSV או XML. למרבה המזל, יש שפע של ספריות שאתה יכול לעשות כדי להשיג זאת, ומומלצות הבסיסיות ביותר, כלומר json, csv ו-xml עבור קובצי JSON, CSV ו-XML, בהתאמה.
ספריות כאלה מאפשרות לך ליצור קובץ, להוסיף לו נתונים, ולאחר מכן, לבסוף, לייצא את הקובץ לאחסון המקומי או לשרת המרוחק שלך.
7. מרק מכאני
מרק מכאני? האם מדובר ב-ripoff של מרק יפהפה זול? לא. בהשראת לְמַכֵּן ובהתבסס על בקשות Python ומרק יפה, MechanicalSoup עוזר לך להפוך את ההתנהגות האנושית לאוטומטית ולחלץ נתונים מדף אינטרנט. אתה יכול לשקול את זה באמצע הדרך בין מרק יפה וסלניום. המלכוד היחיד? זה לא מטפל ב-JavaScript.
בעוד השמות דומים, התחביר וזרימת העבודה של MechanicalSoup שונים מאוד. אתה יוצר הפעלת דפדפן באמצעות MechanicalSoup וכאשר הדף מוריד, אתה משתמש בשיטות של Beautiful Soup כמו למצוא() ו מצא הכל() כדי לחלץ נתונים ממסמך HTML.
תכונה מרשימה נוספת של MechanicalSoup היא שהיא מאפשרת לך למלא טפסים באמצעות סקריפט. זה מועיל במיוחד כאשר אתה צריך להזין משהו בשדה (שורת חיפוש, למשל) כדי להגיע לדף שאתה רוצה לגרד. הטיפול בבקשות של MechanicalSoup הוא נפלא מכיוון שהוא יכול לטפל באופן אוטומטי בהפניות מחדש ולעקוב אחר קישורים בדף, וחוסך ממך את המאמץ של קידוד ידני של קטע כדי לעשות זאת.
מכיוון שהוא מבוסס על מרק יפה, יש חפיפה משמעותית בחסרונות של שתי הספריות הללו. לדוגמה, אין שיטה מובנית לטיפול בפלט נתונים, סיבוב פרוקסי ועיבוד JavaScript. הבעיה היחידה של מרק יפה ש-MechanicalSoup פתרה היא תמיכה בטיפול בבקשות, שנפתרה על ידי קידוד עטיפה לספריית הבקשות של Python.
גירוד אינטרנט ב-Python נעשה קל יותר
Python היא שפת תכנות רבת עוצמה לגרידת האינטרנט, ללא ספק, אבל הכלים שבהם נעשה שימוש הם רק חלק מהבעיה. הבעיה הבולטת ביותר שאנשים מתמודדים איתם בעת קידוד מגרד היא לימוד היררכיית מסמכי HTML.
הבנת המבנה של דף אינטרנט וידע לאתר אלמנט במהירות היא חובה אם ברצונך לפתח מגרדי אינטרנט מתקדמים.