scraper על המחשב הנייד שלכם בסדר עד שאתם סוגרים אותו באמצע-ריצה, ה-IP הביתי שלכם מוגבל-קצב, או שאתם רוצים שאותה עבודה תרוץ כל שעה בין אם אתם ערים ובין אם לא. העברתו ל-VPS מתקנת את כל השלושה: הוא נשאר למעלה 24/7, הוא לא שורף את המוניטין של ה-IP הביתי שלכם, ו-cron או timer של systemd מריץ אותו לפי לוח בלעדיכם. הנה איך להגדיר את זה, כמה שרת אתם באמת צריכים, והחלקים שרוב המדריכים בשקט מדלגים עליהם.
למה VPS מנצח את המכונה שלכם לזה
- 24/7 ומתוזמן. scraper שרץ כל שעה צריך מארח שתמיד למעלה. מחשב נייד לא.
- ה-IP הביתי שלכם נשאר נקי. גירוד מהבית אומר שה-IP המגורים שלכם סופג את מגבלות-הקצב והחסימות. עשו את זה משרת והחיבור שלכם עצמו נשאר ללא נגיעה.
- יציבות. ללא שינה, ללא נפילות wifi באמצע-crawl, חיבור דאטה-סנטר יציב, ומקום לצבור תוצאות.
ה-stack, ומה כל חלק צריך
שתי מחלקות-משקל שונות מאוד, ובחירת התוכנית הלא נכונה מבזבזת כסף או מרעיבה את העבודה:
- httpx / requests (Python) — ל-APIs, נקודות קצה של JSON, ו-HTML סטטי. זה קל: התהליך יושב בעשרות מגה-בייטים, כבול-רשת, לא כבול-CPU. Nano של $3 (1 vCPU / 1 GB) מריץ את זה בנוחות, אפילו עם מקביליות דרך
asyncio. - Playwright / Chromium headless — לאתרים מרונדרי-JavaScript שבהם אתם צריכים דפדפן אמיתי. זה הכבד. Chromium headless הוא בערך 300–400 MB למופע דפדפן, בתוספת 100–200 MB לכל context/tab פתוח, בתוספת ה-runtime שלכם. תקציב:
- Micro של $5 (2 vCPU / 2 GB) — אחד-שני browser contexts בכל פעם.
- Small של $8 (4 vCPU / 4 GB) — כמה contexts מקביליים, או עמודים כבדים יותר.
כלל האצבע: הקוד שלכם כמעט אף פעם לא צוואר הבקבוק — Chromium כן. מדדו לדפדפן, לא ל-scraper.
תזמון: timer של systemd על cron
cron עובד, אבל timer של systemd הוא ברירת המחדל הטובה יותר על שרת שאתם מתחזקים: לוגים דרך journalctl, catch-up אם הארגז היה למטה, וסטטוס לכל-ריצה שניתן לבדיקה. הגדרה מינימלית:
# /etc/systemd/system/scrape.service
[Unit]
Description=Run scraper
[Service]
Type=oneshot
User=scraper
WorkingDirectory=/home/scraper/job
ExecStart=/home/scraper/job/venv/bin/python scrape.py
# /etc/systemd/system/scrape.timer
[Unit]
Description=Hourly scrape
[Timer]
OnCalendar=hourly
Persistent=true
[Install]
WantedBy=timers.target
sudo systemctl enable --now scrape.timer
journalctl -u scrape.service -f # watch runs
Persistent=true הוא הדבר ש-cron לא יכול לעשות: אם השרת היה כבוי בזמן הריצה, ה-job נורה פעם אחת באתחול במקום לדלג בשקט.
לאן התוצאות הולכות
שמרו את זה פשוט והתאימו לנפח: SQLite לנתונים מובנים שתשאלו (קובץ אחד, אפס הגדרה), CSV ל-dumps טבלאיים מהירים, או אחסון אובייקטים תואם-S3 כשהתוצאות גדלות מעבר לארגז או שאתם רוצים אותן מחוץ-לשרת. סובבו את הלוגים שלכם (logrotate או מגבלות journald) כך ש-scraper פטפטן לא ימלא את הדיסק לאט.
החלק הכן: IP יציאה ומוניטין
זה הפרט שמחליט אם ה-scraper שלכם עובד לשבוע או נחסם ביום הראשון.
בתוכנית NAT, תעבורה יוצאת חולקת IP יציאה אחד עם לקוחות אחרים. המוניטין של ה-IP הזה משותף — שכן שמגרד את אותה מטרה יכול לגרום לכתובת להיות מוגבלת-קצב לפני שאתם שולחים בקשה אחת. בסדר לגירוד קל ומזדמן; מטרד בנפח.
IP ייעודי נותן לכם מוניטין יציאה משלכם — ההתנהגות של אף אחד אחר לא משפיעה עליו. אבל זה חותך לשני הכיוונים: גירוד אגרסיבי שורף את ה-IP הנקי שלכם, וברגע שמטרה חוסמת אותו, הוא חסום. IP ייעודי הוא שליטה, לא חסינות.
בקנה-מידה אמיתי, אתם צריכים מאגרי proxy חיצוניים. אף IP בודד — משותף או ייעודי — לא יכול לפזר עומס על פני הרבה כתובות, שזה מה שגירוד רציני נגד מטרות מוגבלות-קצב-לפי-IP דורש. proxies הם שכבה גנרית של צד-שלישי שאתם מוסיפים מעל; ה-VPS מריץ את ה-scraper, מאגר ה-proxy מספק את הכתובות. אל תצפו מ-IP שרת אחד לעשות את העבודה של מאגר proxy.
אתיקה וה-AUP — לא אופציונלי
גירוד חי באזור אפור משפטית ואתית, אז היו מפוכחים:
- כבדו מגבלות קצב ו-robots.txt. רסנו את הבקשות שלכם. scraper מנומס נראה כמו תעבורה; לא-מנומס נראה כמו התקפה.
- אל תעשו DoS למטרה שלכם. הכאת אתר עד שהוא נופל אינה גירוד, זו מניעת-שירות — וזו הפרת שימוש-מקובל כאן שמביאה להפסקת השירות.
- גרדו רק את מה שמותר לכם. איסוף נתונים חוקי ומורשה הוא הקו. חצו אותו וזה עליכם.
השורה התחתונה
VPS הוא הבית הנכון ל-scraper: תמיד-מקוון, מתוזמן, ומחוץ ל-IP הביתי שלכם. התאימו את התוכנית ל-stack — Nano של $3 ל-httpx, Micro של $5 עד Small של $8 ל-Playwright — תזמנו עם timer של systemd, והיו כנים לגבי IP-ים: יציאה משותפת חולקת מוניטין, IP ייעודי הוא שלכם לבנות או לשרוף, וקנה-מידה אמיתי אומר מאגרי proxy. נעלו את הארגז קודם עם רשימת התיוג לאבטחת VPS חדש, מדדו אותו נכון עם מדריך מדידת ה-VPS, ואם פרטיות תשלום-ללא-כרטיס חשובה, הפירוק של VPS אנונימי הוא הגרסה הכנה. גרדו באחריות — ה-AUP אמיתי.
מוכנים לגרד? תוכנית Micro היא התחלה מוצקה; crawls מקביליים גדולים עושים טוב יותר על Small.
תגובות
אין עדיין תגובות. היו הראשונים.