בריף טוב לפרויקט סקרייפינג הוא ההבדל בין הצעה מדויקת לטווח מעורפל. אילו שישה נתונים להכין, מה באמת מניע את המחיר, ואיך נראית שורת דוגמה.
עיקרי הדברים
- שורת דוגמה אחת ממולאת ביד שווה יותר מעמוד של תיאור מילולי.
- מה שמניע את המחיר הוא תדירות והגנות האתר, לא כמות השדות.
- "המטרה" אינה שאלה מנומסת - היא מה שקובע אם צריך סקרייפינג בכלל.
- בלי קריטריון קבלה מוגדר, אין נקודה שבה הפרויקט נגמר.
- מקור עם הגנות חזקות הוא הנעלם היחיד שאי אפשר לתמחר בלי לבדוק.
ההבדל בין פרויקט סקרייפינג שזורם לבין אחד שנגרר נקבע כמעט תמיד בבריף. שישה נתונים - מקורות, שדות, היקף, תדירות, פורמט מסירה ומטרה - הופכים הצעה מעורפלת להצעה מדויקת, ובדרך כלל גם מוזילים אותה.
שישה נתונים שהופכים בריף להצעה
| הנתון | מה לכתוב | למה זה משנה |
|---|---|---|
| מקורות | כתובות URL אמיתיות, לא שם אתר | לדף קטגוריה ולדף מוצר יש מבנה שונה |
| שדות | רשימה מדויקת, בשמות שלכם | "פרטי מוצר" אינו שדה |
| היקף | כמה רשומות, כמה דפים | קובע ארכיטקטורה, לא רק זמן |
| תדירות | חד-פעמי / יומי / כל שעה | המניע הגדול ביותר של עלות |
| פורמט מסירה | גיליון, בסיס נתונים, API, דשבורד | נקבע בהתחלה, יקר לשנות בסוף |
| מטרה | מה תעשו עם זה | קובע אם יש מסלול זול יותר |
השורה הראשונה היא זו שחוסכת הכי הרבה זמן בשיחה. אתר אחד יכול להחזיק חמישה סוגי דפים עם חמישה מבנים שונים, ולכן "לסרוק את האתר" אינו איפיון - שלוש כתובות מייצגות הן.
שורת הדוגמה: המסמך הכי שימושי בבריף
לפני כל תיאור מילולי, כדאי לפתוח גיליון ולמלא שורה אחת ביד, כפי שהיא אמורה להיראות כשהפרויקט מסתיים. שם עמודה לכל שדה, וערך אמיתי בכל תא.
זה עושה שלושה דברים בבת אחת. ראשית, הוא חושף שדות שחשבתם עליהם כאחד ומתפרקים לשניים - "מחיר" שמתברר כמחיר, מטבע, ומחיר לפני הנחה. שנית, הוא מגלה שדות שאינם קיימים באתר בכלל, וזו הפתעה שעדיף שתגיע ביום הראשון. שלישית, הוא הופך לקריטריון קבלה: הפרויקט נגמר כשהקובץ נראה כמו השורה הזאת, כפול עשרת אלפים.
מה באמת מניע את המחיר
בניגוד לאינטואיציה, מספר השדות כמעט אינו משפיע. שלושת הגורמים שכן:
- תדירות - ריצה חד-פעמית היא סקריפט; ריצה כל שעה היא מערכת עם ניטור, התראות וטיפול בכשלים.
- הגנות האתר - אתר שמגיש HTML סטטי לעומת אתר עם רינדור, הגבלת קצב או אתגר אנושי הם שני עולמות.
- דרישת השלמות - "רוב הרשומות" ו"כל הרשומות, מאומת" אינם אותו פרויקט.
השלישי הוא זה שעסקים לא חושבים עליו ואחר כך מתווכחים עליו. אם חסרות שתי רשומות מתוך אלף וזה לא משנה, זה פרויקט אחד; אם כל רשומה חסרה היא בעיה, צריך אימות, השוואה מול ספירה מוצהרת, וטיפול בחריגים - וזה משנה את המחיר יותר מכל שדה שתוסיפו.
למה שואלים מה המטרה
לא מתוך סקרנות. המטרה קובעת שלושה דברים שאי אפשר להסיק מהשדות: האם קיים מקור רשמי שיהיה זול ויציב יותר, האם מעורב מידע אישי, והאם התדירות שביקשתם באמת נדרשת.
המקרה הנפוץ ביותר הוא הראשון. לקוח מבקש לסרוק פלטפורמה שיש לה API ציבורי, כי הוא לא ידע שיש. ההשוואה המלאה בין השניים מופיעה בסקרייפינג מול API, והכלל הפשוט הוא שממשק רשמי עדיף כמעט תמיד - הוא יציב, מהיר, ולא נשבר בעדכון עיצוב. להסבר הבסיסי ראו מה זה web scraping.
המקרה השני, מידע אישי, הוא המקום שבו התשובה עשויה להיות שלא לבצע בכלל. הרקע העובדתי נמצא בהאם סקרייפינג חוקי בישראל; ההחלטה עצמה היא לעורך דין ולא לספק.
מה לבדוק לפני שמתחייבים
- שהמקור אינו מחייב התחברות כדי להגיע לנתונים.
- שהנתונים שאתם רואים בדפדפן קיימים גם בלי הרצת JavaScript, או שידוע שלא.
- שיש דרך לזהות רשומה באופן ייחודי ויציב - מזהה, ולא כותרת.
- שקיים עימוד ניתן לחיזוי, ולא גלילה אינסופית בלבד.
- שהאתר אינו משנה תוכן לפי מדינה או לפי משתמש מחובר.
- שהיקף הנתונים ההיסטוריים ידוע - האם צריך גם אחורה.
הסעיף השלישי הוא זה שקובע אם אפשר לעדכן נתונים או רק לאסוף אותם מחדש כל פעם. בלי מזהה יציב, כל ריצה היא סט חדש, ואין דרך לדעת מה השתנה - וזו בדיוק היכולת שרוב הלקוחות מניחים שקיימת. פרטים נוספים בעמוד שירותי web scraping.
איך נראה תהליך תקין אחרי הבריף
הסדר שעובד הוא בדיקת היתכנות קצרה לפני הצעה מחייבת: שליפה של עשרים רשומות מהמקור האמיתי. זה לוקח שעות ספורות ועונה על השאלה שאי אפשר לענות עליה מהתיאור - מה ההגנות בפועל, ואילו שדות באמת נגישים.
הצעה שניתנת בלי הבדיקה הזו נשענת על הנחות, ולכן היא או מנופחת כדי לכסות סיכון, או מדויקת לכאורה ומתעדכנת באמצע. שתי התוצאות גרועות, והבדיקה המקדימה מונעת את שתיהן.
כמה זמן לוקח לאסוף את הבריף?
בעסק שיודע מה הוא רוצה, זו שעה - רוב הזמן הולך על שורת הדוגמה, וזה בדיוק הזמן שמשתלם. כשזה לוקח יותר, הסיבה כמעט תמיד היא שהמטרה עצמה עדיין לא ברורה, וזו שאלה שכדאי לסגור לפני שמזמינים נתונים.
מה שלא כדאי הוא להזמין "סקירה ראשונית" כתחליף לבריף. סקרייפינג מספק בדיוק את מה שביקשתם; הוא אינו מגלה מה כדאי לבקש.
מקורות
שאלות נפוצות
מה אם אני לא יודע אילו שדות אני צריך?
אז הצעד הראשון אינו סקרייפינג אלא להחליט מה תעשו עם הנתונים. שאלה עסקית אחת - "איזו החלטה אקבל אחרת אחרי שיהיו לי הנתונים" - מייצרת את רשימת השדות כמעט לבד.
האם עדיף להתחיל קטן?
כמעט תמיד. מקור אחד, טווח מצומצם, וריצה אחת - זה מגלה את כל ההפתעות בעלות נמוכה, ומאפשר להרחיב על בסיס מה שנלמד ולא על בסיס הערכה.
כמה זמן לוקח פרויקט טיפוסי?
זה תלוי בעיקר בהגנות המקור ובדרישת השלמות, לא בכמות הנתונים. הרכיבים שמרכיבים את המחיר והלוח מפורטים ב[כמה עולה סקרייפינג](/he/blog/how-much-does-web-scraping-cost).
האם כדאי כלי מדף במקום פיתוח?
לפעמים כן, ובעיקר כשהמקור פשוט והתדירות נמוכה. ההשוואה המלאה, כולל נקודת המעבר, נמצאת ב[לבנות או לקנות סקרייפר](/he/blog/build-vs-buy-web-scraper).
להמשך קריאה
שירות רלוונטי
Web Scraping וחילוץ נתונים
סקרייפינג וצינורות נתונים אמינים שמספקים נתונים נקיים.
על הכותב
יהונתן סעדיה
מפתח פרילנסר לאוטומציה, אתרים ו-MVP
אני יהונתן סעדיה, מפתח בכיר שבונה אוטומציה עסקית, אתרים מותאמים ומוצרי MVP לעסקים קטנים ובינוניים בארה"ב, אירופה וישראל. המדריכים האלה נכתבים מתוך עבודה אמיתית עם לקוחות, לא מתיאוריה.
בוא נעבוד יחדיש לך פרויקט דומה?
ספר לי מה אתה רוצה לבנות או איזה תהליך להפוך לאוטומטי. אני חוזר תוך 24 שעות עסקים עם כמה שאלות ממוקדות, ואז עוברים על זה יחד בשיחת היכרות חינמית של 30 דקות, בלי התחייבות. בסוף יש לך היקף עבודה, לוח זמנים ומחיר קבוע - או תשובה כנה שלא שווה לבנות את זה.
