כל הפרויקטים

סקרייפר Pagination לרישום עסקים של Washington DC

סקריפט Python יחיד שעושה bulk-pagination מול ה-API של DLCP.

המטרה

למסור הורדה מלאה וחוזרת של רישום העסקים הציבורי של Washington DC DLCP — dataset שלא מוצע כייצוא bulk.

הפתרון

סקריפט CLI יחיד שקורא ישירות ל-paginationadvance-search של DLCP עם headers מדויקים (x-app-route, referer), חיפוש wildcard עם %, pagination מבוסס-token, חילוץ רשומות מינימלי, ולוגים מתויגים עם timestamps. --start-page מאפשר resume.

עיקרי הדברים

  • בלי דפדפן — requests טהור מנצח Selenium ל-APIs
  • Wildcard % פותח את הרישום המלא בסריקה אחת
  • לוגים מתויגים הופכים tail מרחוק לטריוויאלי

האתגר

DLCP מציע את הרישום רק דרך UI של pagination — בלי CSV או כפתור download.

Reverse engineering ל-API מה-Network tab, הרצה עם requests.Session, שימוש ב-wildcard % לכל העסקים.

ה-API מחזיר 403 שקט או נתונים ריקים אם headers לא תואמים.

_build_headers() משכפל את ה-headers המדויקים של הדפדפן (x-app-route, referer, cache/pragma no-cache, content-type).

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

--start-page N ממשיך מהדף האחרון שהצליח; פלט JSON זורם כך שריצה חלקית לא מתבזבזת.

מה נמסר

  • washingtondc_pagination.py סקריפט יחיד
  • פלט CSV לדוגמה (va-test.csv)
  • מבנה run_artifacts/

תוצאות

DC DLCP registry

יעד

--start-page

Resume

Streaming JSON

פלט

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

  • ל-government registries, 'אין ייצוא bulk' היא לרוב בעיית headers/wildcard בתחפושת
  • Resume ב-CLI זול יותר מ-DB של resume
  • Logger מתויג שווה יותר ממה שנראה כש-tailing מרחוק