כל הפרויקטים

סקרייפר קטלוג מלא של KSP.co.il

סקרייפר curl_cffi + browser-impersonation שמוריד את הקטלוג המלא של KSP ל-JSON + CSV ידידותי ל-Excel.

המטרה

להוריד את כל הקטלוג של KSP.co.il (מהקמעונאים הגדולים בישראל) ל-JSON + CSV למעקב מחירים וניתוח, דרך הגנת TLS fingerprinting ועץ קטגוריות עמוק.

הפתרון

סקריפט Python יחיד (fetch_ksp_all.py) שמשכפל את ה-SSE endpoint של KSP דרך curl_cffi (impersonation של Chrome), עובר דף-דף ב-50 דרך category path של 15 רמות, וכותב גם ksp_all_items.json וגם CSV ידידותי ל-Excel. ksp_to_csv.py post-processor ממיר JSON בלי re-scraping.

עיקרי הדברים

  • curl_cffi impersonation אמין דרמטית מ-header juggling כש-TLS fingerprinting פעיל
  • פלט כפול JSON + CSV ידידותי ל-Excel הופך ניתוח לפשוט
  • Capture של הדפדפן (test_ksp.js) הוא הדרך המהירה לעשות diff כשהאתר משתנה

האתגר

requests.get(...) מחזיר ריק/חסום כי KSP עם TLS fingerprinting.

curl_cffi עם impersonation של chrome + headers מדויקים מה-DevTools.

ה-endpoint של KSP משדר text/event-stream chunks; פירוש JSON נאיבי נכשל.

accept: text/event-stream, צבירת chunks, פירוש ה-stream המשולב בסוף כל דף.

Category path של 15 רמות שביר — טעות = ריק.

שרשרת מדויקת מה-Network tab, hard-coded כ-CATEGORY — שינוי = קבוע אחד.

Excel פותח UTF-8 CSVs לא עקבי עם עברית.

CSV writer עם UTF-8 BOM מפורש — Excel מזהה עברית בפתיחה.

מה נמסר

  • fetch_ksp_all.py סקרייפר ראשי
  • ksp_to_csv.py post-processor
  • test_ksp.{py,js,json,csv} — reference capture מהדפדפן
  • requirements.txt

תוצאות

50

גודל דף

JSON + CSV (UTF-8 BOM)

פלטים

KSP.co.il full catalog

יעד

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

  • curl_cffi impersonation אמין דרמטית מ-headers ידני כש-TLS fingerprinting
  • תמיד UTF-8-BOM ב-CSV כשדאטה בעברית הולך ל-Excel
  • test_{site}.js capture לצד הסקרייפר — ה-diff הראשון כשהאתר משתנה