רוצה ללמוד גירוד אינטרנט עם Python אבל מתלבטים אם להשתמש במרק יפה, סלניום או סקרייפי עבור הפרויקט הבא שלך? אמנם כל הספריות והמסגרות של Python הן עוצמתיות בפני עצמן, אבל הן לא מתאימות כל צרכי גירוד האינטרנט, ומכאן, חשוב לדעת באיזה כלי אתה צריך להשתמש עבור מסוים עבודה.
בואו נסתכל על ההבדלים בין מרק יפה, סקרייפי וסלניום, כדי שתוכל לקבל החלטה נבונה לפני שתתחיל בפרויקט גירוד האינטרנט הבא שלך ב-Python.
1. קלות שימוש
אם אתה מתחיל, הדרישה הראשונה שלך תהיה ספרייה שקל ללמוד ולהשתמש בה. מרק יפה מציע לך את כל הכלים הבסיסיים שאתה צריך כדי לגרד את הרשת, וזה במיוחד מועיל לאנשים שיש להם ניסיון מינימלי עם Python אבל רוצים להגיע לקרקע עם אינטרנט גְרִידָה.
האזהרה היחידה היא, בשל הפשטות שלו, מרק יפה אינו חזק בהשוואה לסקרפי או סלניום. מתכנתים עם ניסיון בפיתוח יכולים לשלוט בקלות גם ב-Scrapy וגם בסלניום, אבל למתחילים, ה הפרויקט הראשון יכול לקחת הרבה זמן לבנות אם הם בוחרים ללכת עם המסגרות האלה במקום יפה מרק.
כדי לגרד את תוכן תג הכותרת ב-example.com באמצעות מרק יפה, תשתמש בקוד הבא:
url = "https://example.com/"
res = requests.get (url).text
מרק = מרק יפה (מיל, 'html.parser')
title = soup.find("כותרת").טֶקסט
הדפס(כותרת)
כדי להשיג תוצאות דומות באמצעות סלניום, תכתוב:
url = "https://example.com"
דרייבר = מנהל אינטרנט. Chrome("נתיב/to/chromedriver")
נהג.לקבל(כתובת אתר)
title = driver.find_element (מאת TAG_NAME, "כותרת").get_attribute('טֶקסט')
הדפס(כותרת)
מבנה הקבצים של פרויקט Scrapy מורכב ממספר קבצים, מה שמוסיף למורכבותו. הקוד הבא מגרד את הכותרת מ-example.com:
יְבוּא סקרפימעמדTitleSpider(מגרדת. עַכָּבִישׁ):
שם = 'כותרת'
start_urls = ['https://example.com']
defלְנַתֵחַ(עצמי, תגובה):
תְשׁוּאָה {
'שֵׁם': response.css('כותרת'),
}
אם אתה רוצה לחלץ נתונים משירות שמציע API רשמי, ייתכן שזו תהיה החלטה נבונה לעשות זאת השתמש ב-API במקום לפתח מגרד אינטרנט.
2. מהירות גרידה ומקבילות
מבין השלושה, Scrapy הוא המנצח הברור בכל הקשור למהירות. הסיבה לכך היא שהוא תומך בהקבלה כברירת מחדל. באמצעות Scrapy, אתה יכול לשלוח מספר בקשות HTTP בו-זמנית, וכאשר הסקריפט הוריד את קוד ה-HTML עבור קבוצת הבקשות הראשונה, הוא מוכן לשלוח אצווה נוספת.
עם מרק יפה, אתה יכול להשתמש בספריית השרשורים כדי לשלוח בקשות HTTP במקביל, אבל זה לא נוח ותצטרך ללמוד ריבוי שרשורים כדי לעשות זאת. בסלניום, אי אפשר להשיג מקבילות מבלי להפעיל מספר מופעי דפדפן.
אם היית מדרג את שלושת כלי גירוד הרשת הללו מבחינת מהירות, Scrapy הוא המהיר ביותר, ואחריו יפה מרק וסלניום.
3. שימוש בזיכרון
סלניום הוא ממשק API לאוטומציה של דפדפן, שמצא את היישומים שלו שדה גירוד האינטרנט. כאשר אתה משתמש בסלניום כדי לגרד אתר אינטרנט, הוא מולידה מופע דפדפן חסר ראש שפועל ברקע. זה הופך את הסלניום לכלי עתיר משאבים בהשוואה למרק יפה וסקרפי.
מאחר שהאחרונים פועלים לחלוטין בשורת הפקודה, הם משתמשים בפחות משאבי מערכת ומציעים ביצועים טובים יותר מאשר סלניום.
4. דרישות תלות
מרק יפה הוא אוסף של כלי ניתוח שעוזרים לך לחלץ נתונים מקובצי HTML ו-XML. זה נשלח בלי שום דבר אחר. אתה צריך להשתמש בספריות כמו בקשות אוֹ urllib לבצע בקשות HTTP, מנתחים מובנים לניתוח ה-HTML/XML וספריות נוספות ליישום פרוקסי או תמיכה במסד נתונים.
Scrapy, לעומת זאת, מגיע עם כל השבנג. אתה מקבל כלים לשליחת בקשות, לנתח את הקוד שהורד, לבצע פעולות על הנתונים שחולצו ולאחסן את המידע המגורד. אתה יכול להוסיף פונקציות אחרות ל-Scrapy באמצעות הרחבות ותוכנות ביניים, אבל זה יגיע מאוחר יותר.
עם Selenium, אתה מוריד מנהל התקן אינטרנט עבור הדפדפן שברצונך להפוך לאוטומטי. כדי ליישם תכונות אחרות כמו אחסון נתונים ותמיכה ב-proxy, תצטרך מודולים של צד שלישי.
5. איכות התיעוד
בסך הכל, כל תיעוד של הפרויקט מובנה היטב ומתאר כל שיטה תוך שימוש בדוגמאות. אבל האפקטיביות של התיעוד של הפרויקט תלויה במידה רבה גם בקורא.
התיעוד של Beautiful Soup הרבה יותר טוב למתחילים שמתחילים עם גירוד אינטרנט. לסלניום ול-Scrapy יש תיעוד מפורט, ללא ספק, אבל הז'רגון הטכני יכול לתפוס עולים חדשים רבים.
אם אתה מנוסה במושגי תכנות ובטרמינולוגיות, אז כל אחד משלושת התיעוד יהיה קל לקריאה.
6. תמיכה בהרחבות ובתוכנות ביניים
Scrapy היא המסגרת הניתנת להרחבה ביותר של גירוד אינטרנט של Python, נקודה. הוא תומך בתוכנות ביניים, הרחבות, פרוקסי ועוד, ועוזר לך לפתח סורק לפרויקטים בקנה מידה גדול.
אתה יכול לכתוב סורקים חסינים ויעילים על ידי הטמעת תוכנות ביניים ב-Scrapy, שהן בעצם הוקס שמוסיפות פונקציונליות מותאמת אישית למנגנון ברירת המחדל של המסגרת. לדוגמה, ה-HttpErrorMiddleware מטפל בשגיאות HTTP כך שהעכבישים לא יצטרכו להתמודד איתן בזמן עיבוד בקשות.
תוכנת ביניים ותוספים הם בלעדיים ל-Scrapy, אבל אתה יכול להשיג תוצאות דומות עם מרק יפה וסלניום על ידי שימוש בספריות Python נוספות.
7. עיבוד JavaScript
לסלניום יש מקרה שימוש אחד שבו הוא עולה על ספריות אחרות של גירוד אינטרנט, וזה, גרידה של אתרים התומכים ב-JavaScript. למרות שאתה יכול לגרד אלמנטים של JavaScript באמצעות תוכנות ביניים של Scrapy, זרימת העבודה של Selenium היא הקלה והנוחה מכולן.
אתה משתמש בדפדפן כדי לטעון אתר אינטרנט, לתקשר איתו באמצעות לחיצות ולחיצות כפתורים, ומתי יש לך את התוכן שאתה צריך כדי לגרד על המסך, לחלץ אותו באמצעות CSS ו-XPath של Selenium בוררים.
מרק יפה יכול לבחור רכיבי HTML באמצעות בוררי XPath או CSS. עם זאת, הוא אינו מציע פונקציונליות לגרד אלמנטים שניתנו ב-JavaScript בדף אינטרנט.
גירוד אינטרנט קל עם Python
האינטרנט מלא בנתונים גולמיים. גירוד אינטרנט עוזר להמיר נתונים אלה למידע משמעותי שניתן להשתמש בו. סלניום הוא כנראה ההימור הבטוח ביותר שלך אם אתה רוצה לגרד אתר עם JavaScript או צריך להפעיל כמה אלמנטים על המסך לפני חילוץ הנתונים.
Scrapy היא מסגרת גירוד אינטרנט מלאה לכל הצרכים שלך, בין אם אתה רוצה לכתוב סורק קטן או מגרד בקנה מידה גדול שסורק שוב ושוב את האינטרנט לקבלת נתונים מעודכנים.
אתה יכול להשתמש במרק יפה אם אתה מתחיל או צריך לפתח במהירות מגרד. לא משנה באיזו מסגרת או ספריה אתה הולך, קל להתחיל ללמוד גירוד אינטרנט עם Python.