כל הפרויקטים

סקרייפר פרופילים ופוסטים מפייסבוק

סקרייפר Selenium עם cookie-auth שמושך N פוסטים/Reels אחרונים מפרופילי FB עם כתיבה אטומית וזיהוי checkpoint.

המטרה

למשוך באמינות את N הפוסטים/Reels האחרונים מפרופילי עסק בפייסבוק — לשרוד selectors מסתובבים, חסימת requests, ופג תוקף של cookies.

הפתרון

CLI ב-Python/Selenium (main.py) שמקבל profile URL + limit ומחזיר JSON + CSV אופציונלי. Auth מבוסס-cookies עם fallback ל-email/password. functions.py מספק primitives של login/ניווט/checkpoint; main.py כותב אטומית (temp → rename) כך ש-kill באמצע לא משחית.

עיקרי הדברים

  • כתיבה אטומית — kill באמצע לא משחית פלט
  • זיהוי checkpoint הופך חסימות שקטות לשגיאות ברורות
  • DOM dumps מובנים הופכים תחזוקת selectors ל-diff

האתגר

Selectors של פייסבוק מסתובבים — XPaths קשיחים נשברים תוך שבועות.

דגלי debug-dump שומרים את ה-DOM הנוכחי כך שבעת שינוי, ניתן לעשות diff מול dump ישן ולעדכן מהר.

פג-תוקף של cookies באמצע ריצה קרס בלי לייצר פלט חלקי.

is_login_page ו-is_checkpoint_page נבדקים מיד אחרי open_profile_posts; בכישלון יציאה עם שגיאה ברורה לפני נגיעה בקובץ הפלט.

Kill בזמן json.dump השאיר את הפלט חצוי.

כתיבה ל-output.json.tmp ואז Path.replace(output) — rename ברמת OS = הקובץ הסופי או חדש או זהה לקודם.

Headless מסתיר את מצב ה-DOM שנדרש לדיבוג שבירת selectors.

--headless כבוי כברירת מחדל בפיתוח; Headed + screenshot/HTML dump מאפשרים שחזור offline.

מה נמסר

  • main.py CLI
  • functions.py + functions_old.py
  • convert_cookies_to_json.py
  • facebook_cookies.json דוגמת סכמה
  • inspect_page_dump.py
  • דוגמת פלט scraped_posts.json

תוצאות

Cookies + fallback

מצבי auth

JSON + CSV

פלט

Atomic writes

בטיחות

מה זה לימד אותי

  • לאתרים עם selectors מסתובבים, DOM dumps + diff מנצחים חוכמה של CSS
  • כתיבה אטומית שווה כל שורה — kill אחד שהורס scrape של 20 דקות הוא שיעור שדביק
  • זיהוי checkpoint לפני נגיעה בפלט הוא הדפוס הכי חשוב ל-production