כל הפרויקטים

סקרייפר פורטלי בתי משפט בפנסילבניה

10+ פורטלי PA civil ו-public-notice לצינור לידים משפטיים מסווג-keywords עם העשרת BatchData.

המטרה

קרסון מייצר לידים מהודעות probate/foreclosure/sheriff-sale/tax-sale ברחבי PA. כל מחוז עם פורטל שונה. המטרה: חבילת סקרייפרים יחידה שממפה 10+ פורטלים לצינור אחד עם העשרת BatchData, אחסון SQLite ופלט Google Sheets.

הפתרון

Framework רב-פורטלי: config.py עם מיפוי keywords-to-category, רשימת מחוזות, אישורי proxy/captcha/ZenRows/BatchData. scrapers/ עם מודול לכל פורטל (civil_core.py + public_notice.py + trackers per-county עם גרסאות with/without-proxy). run_test.py להרצת subset. SQLite + Google Sheets export.

עיקרי הדברים

  • 10+ פורטלים מאוחדים תחת סכמת lead אחת
  • Config של keyword→category מנצח ML לגודל הזה
  • גרסאות with/without-proxy מאלפות פורטלים שבריריים
  • העשרת BatchData הופכת לידים ל-actionable לפני ה-sheet

האתגר

10 פורטלים שונים עם layout, טפסי חיפוש ו-pagination שונים.

civil_core.py מיישם את workflow המשותף; מודולים per-county מרחיבים. public_notice.py נפרד. הכל מתנרמל לסכמה אחת לפני SQLite.

הודעות כטקסט חופשי; אותה הודעה יכולה להיות probate/foreclosure/tax לפי ביטוי בגוף.

PUBLIC_NOTICE_KEYWORDS ב-config.py ממפה ביטויים לקטגוריות; הוספה = config, לא קוד.

חלק מהפורטלים עובדים על residential proxies, חלק דוחים.

שתי גרסאות לכל פורטל — with_proxy / without_proxy — כל אחת מכוונת למסלול שלה; המפעיל בוחר per-county.

שם+כתובת מהודעת בית משפט לא פעולים — צריך בעל, טלפון, מטא-דאטה.

אינטגרציית BatchData API מעשירה כל ליד לפני SQLite, כך ש-Sheets מוכן לשימוש מיד.

חלק מהפורטלים עם CAPTCHA; אחרים מגישים HTML שונה ל-residential IPs.

2Captcha + ZenRows רנדור residential כ-fallbacks.

מה נמסר

  • חבילת scrapers/ (civil_core.py, public_notice.py, trackers per-county)
  • config.py מרכזי
  • run_test.py
  • SQLite + Google Sheets export
  • אינטגרציות BatchData + 2Captcha + ZenRows + BrightData
  • גרסאות with/without-proxy
  • requirements.txt

תוצאות

10+

פורטלים

Resumable

עמידות

4 (probate/foreclosure/sheriff/tax)

קטגוריות

BatchData

העשרה

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

  • Config של keyword→category זו השכבת סיווג הזולה והמתוחזקת ביותר לגודל הזה
  • גרסאות with/without-proxy הופכות 'שובר לפעמים' ל-'הפוך דגל'
  • SQLite source-of-truth + Sheets export נפרד שומרים על תצוגה אנליסטית מנותקת