כל הפרויקטים

סקרייפר אסירים של ג'ורג'יה

Adaptive partitioning כובש את תקרת ה-150 ומוריד את כל האסירים מ-323 מוסדות בג'ורג'יה.

המטרה

לספק מאגר מלא של כל אסיר ב-Georgia DOC, שורה לכל אישום — למרות תקרת 150 תוצאות שמפילה ~85% מהנתונים של כלא גדול.

הפתרון

סקרייפר Python/Playwright שעובר על 323 מוסדות עם adaptive partitioning (חלוקה לפי אות ראשונה של שם משפחה עד מתחת ל-150), מפיק offenders.csv עם 18 עמודות/אישום, עם progress.json ל-resume ו-rebuild_progress.py לשחזור.

עיקרי הדברים

  • כיסוי 100% מובטח למרות תקרת 150
  • 50K+ שורות אישומים על פני 323 מוסדות
  • Resumable וניתן לשחזור דרך progress.json + rebuild

האתגר

האתר חוסם 150 תוצאות לבקשה; מוסד גדול מאבד ~85% בשקט.

Adaptive partitioning — חיפוש רחב, חלוקה לפי אות ראשונה של שם משפחה כשמגיע ל-150, רקורסיה עמוקה יותר אם partition עדיין חסום. כל partition שהושלם ב-progress.json.

GDC עם JSP sessions, מחזיר 500 ל-HTTP clients רגילים.

Playwright מריץ Chromium אמיתי — מטפל ב-cookies אוטומטית. מצב גלוי חומק גם מזיהוי headless.

תקלת רשת אחרי שעות שורפת הכל.

progress.json מתעד partitions שהושלמו; rebuild_progress.py עובר על CSV קיים ומסנכרן מחדש.

לקוחות רצו שורה-לכל-אישום, אבל GDC מראה אישומים כטבלה מקוננת.

Parser משכפל מאפייני אסיר על פני שורות האישומים — אין צורך ב-join בצד הלקוח.

מה נמסר

  • scraper.py עם --test
  • collector.py, parser.py, browser.py, fetch_requests.py
  • progress.py + rebuild_progress.py לשחזור
  • analyze.py לדו"ח איכות
  • config.py, log_setup.py
  • requirements.txt + Playwright Chromium
  • README עם workflow, schema ו-partitioning

תוצאות

50K+

רשומות

323

מוסדות

100%

כיסוי

Resumable

שחזור

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

  • Adaptive partitioning זו הטכניקה הקנונית לאתרים עם תקרת תוצאות
  • לאתרי JSP/ASP.NET ממשלתיים, Playwright כמעט תמיד יותר מהיר מ-reverse engineering
  • לשמור progress אחרי partition, לא אחרי שורה — overhead זניח, שחזור נקי