jsonscraper

איך למדוד את הדינמיקה של תוכן מתחרים באינסטגרם: צינור API ב-Python

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

מדיניות עריכה דיווח על שגיאה

צוות שיווק יכול לראות פוסטים של מתחרים בפיד, אבל בדיקה ידנית אינה עונה היטב על שאלה ממוקדת: אילו פורמטים ונושאים זוכים בעקביות לתגובות, ואילו בלטו רק פעם אחת? הפתרון הוא לשמור מדי יום נתונים על פוסטים ציבוריים ולהשוות אותם לאורך זמן, לפי פורמט ומונים זמינים.

מאמר: איך למדוד את הדינמיקה של תוכן מתחרים באינסטגרם: צינור API ב-Python
תקציר: תוכנית מעשית לניטור פוסטים ציבוריים באינסטגרם: שליחת בקשה ל-IG Scraper API, נרמול JSON, שמירת תמונות מצב יומיות וחישוב דינמיקה בלי לערבב בין תגובות מצטברות לחדשות.
תפקיד התמונה: תמונת שער — הרעיון המרכזי
מדור: 
נושא חזותי: לוח מחוונים לניתוח נתונים דיגיטליים המציג ציר זמן של כרטיסי תוכן ציבוריים בסגנון אינסטגרם, מוני מעורבות ותמונות מצב יומיות של נתונים, cle
© jsonscraper · איור שנוצר באמצעות AI

להלן צינור עבודה בסיסי ב-Python ובIG Scraper API. הוא מקבל פוסטים של חשבון נבחר, שומר את התשובות בפורמט JSONL ויוצר סיכום של פריטים חדשים. מדדי התגובות בדוח כזה משקפים את הערכים שה-API החזיר בזמן האיסוף; תמונות מצב מתאריכים שונים מאפשרות לנתח בנפרד את השינויים בהם.

ראשית, הגדירו מה בדיוק להשוות

למדגם קטן של מתחרים די לנהל רשימה של חשבונות ציבוריים ולאסוף את הפוסטים שלהם לפי לוח זמנים קבוע. התחילו בשאלות שהנתונים יכולים לענות עליהן: באיזו תדירות מתפרסם תוכן, אילו פוסטים הם Reels או פורמטים אחרים, אילו נושאים חוזרים וכיצד משתנים מוני הלייקים והתגובות הזמינים.

הפרידו באחסון בין שני מושגים: פוסט ותמונת מצב שלו. זהו את הפוסט באמצעות מזהה יציב, אם הוא מופיע בתשובה; כל הפעלה חדשה שמרו כרשומה נפרדת עם מועד האיסוף. כך תוכלו לראות כיצד המונים הזמינים השתנו, במקום לדרוס את הערך של אתמול בערך של היום.

התחברו לנתיב המתועד

בתיעוד של jsonscraper מצוינים לבקשה בסיסית הכתובת https://ig.jsonscraper.com והנתיב GET /v1/user/by/username. לקבלת פוסטים, מפת ה-API מציינת גם את GET /v1/user/medias/chunk. בדקו את קבוצת הפרמטרים והשדות המדויקת בתשובה באוסף Postman המשויך למוצר: אל תבנו את המטפל על מבנה משוער לפני שבדקתם את התשובה בפועל לבקשה שלכם.

לבדיקה ראשונית, השתמשו בדוגמת בקשת הפרופיל המתועדת; העבירו את המפתח באמצעות משתנה סביבה ואל תכתבו אותו בקוד המקור:

curl -G "https://ig.jsonscraper.com/v1/user/by/username" \
  --data-urlencode "username=apple" \
  --data-urlencode "license_key=$JSONSCRAPER_LICENSE_KEY" \
  --data-urlencode "cache_timeout=60"

הדוגמה בדף המוצר מציגה את username, את license_key ואת cache_timeout עבור נתיב הפרופיל. השתמשו בפרמטר בנתיבים אחרים רק אם הוא מצוין עבורם בתיעוד. לבקשת פוסטים, קחו את שמות הפרמטרים העדכניים ממפרט הנתיב הזה.

שמרו את התשובות כתמונות מצב לאורך זמן

הסקריפט הבא הוא שלד להפעלה שוטפת: כתובת ה-URL והפרמטרים של נתיב הפוסטים נשארו בתצורה, כדי שאפשר יהיה למלא אותם בהתאם לתיעוד Postman בלבד. המטפל שומר את ה-JSON המקורי ואת מועד האיסוף; הוסיפו נרמול שדות לאחר בדיקת התשובה בפועל.

import json
import os
from datetime import datetime, timezone
from pathlib import Path

import requests

BASE_URL = "https://ig.jsonscraper.com"
USERNAME = os.environ["IG_USERNAME"]
LICENSE_KEY = os.environ["JSONSCRAPER_LICENSE_KEY"]
OUTPUT = Path("instagram_snapshots.jsonl")

# מלאו את נקודת הקצה והפרמטרים לפי תיעוד הנתיב
# GET /v1/user/medias/chunk באוסף Postman.
MEDIA_PATH = os.environ["IG_MEDIA_PATH"]
MEDIA_PARAMS = json.loads(os.environ["IG_MEDIA_PARAMS_JSON"])

params = {
    **MEDIA_PARAMS,
    "username": USERNAME,
    "license_key": LICENSE_KEY,
}

response = requests.get(
    f"{BASE_URL}{MEDIA_PATH}", params=params, timeout=30
)
response.raise_for_status()
payload = response.json()

record = {
    "collected_at": datetime.now(timezone.utc).isoformat(),
    "username": USERNAME,
    "response": payload,
}
with OUTPUT.open("a", encoding="utf-8") as file:
    file.write(json.dumps(record, ensure_ascii=False) + "\n")

בכוונה אין כאן פרמטרים מומצאים לעימוד או שמות שדות: יש להעתיק אותם מהמפרט המסוים ולבדוק מול תשובת ה-API. בקשות עם timeout ועם raise_for_status() עוזרות לזהות שגיאת רשת לפני שהתוצאה נרשמת כנתונים רגילים. להפעלה אוטומטית, הוסיפו אימות JSON ורישום שגיאות.

הוסיפו לוח זמנים ומדדים

הפעילו את האיסוף פעם ביום באמצעות cron או מתזמן האוטומציה שלכם. עבור כמה חשבונות, עברו על רשימת התצורה, שמרו תמונת מצב נפרדת לכל אחד והיערכו להפעלה חוזרת לאחר שגיאה זמנית. שמרו את המפתח במשתנה סביבה או בכספת סודות; דף ה-API ממליץ בנפרד שלא להטמיע אותו בקוד לקוח.

לאחר בדיקת התשובה, נרמלו את הרשומות לטבלה עם שדות כגון username, media_id, collected_at, סוג התוכן והמונים הזמינים. אל תמחקו את ה-JSON המקורי: הוא יועיל אם פורמט התשובה ישתנה או אם יהיה צורך לבדוק חישוב.

בשכבת הניתוח, חשבו את מספר הפוסטים החדשים בתקופה, את הערך החציוני של התגובות הזמינות לפי פורמט ואת השינוי במונה של אותו פוסט בין תמונות מצב. החציון מצמצם את ההשפעה של פוסט ויראלי יחיד על הסיכום. השוו חשבונות בחלונות זמן זהים והציגו לצד הנתון המצטבר גם את גודל המדגם.

מה תקבלו בסוף

הצוות יקבל טבלת פוסטים שניתן לשחזר וסיכום יומי: תדירות פרסום התוכן, התפלגות לפי פורמטים ודינמיקה של התגובות הזמינות. המידע הזה מסייע לגבש השערות ללוח התוכן שלכם, במקום להסתפק באיסוף צילומי מסך מהפיד.

השלב הבא הוא לשלוח רשומות מנורמלות ל-Google Sheets, למסד נתונים או למערכת להמחשת נתונים, וליצור את הסיכום הטקסטואלי בשלב נפרד. אם אתם משלבים AI, העבירו אליו נתונים מצטברים ובקשו ממנו לתאר דפוסים נצפים בציון התקופה ומספר הפוסטים; את ההחלטה האסטרטגית השאירו לעורך.

התחילו בחשבון אחד ובנתיב אחד: בדקו את הפרמטרים ואת מבנה התשובה בתיאור של IG Scraper API, ואז קבעו את התצורה הזאת בלוח הזמנים. כך הופך ניטור המתחרים מבדיקה ידנית חד-פעמית לצינור עבודה ברור ששומר היסטוריה.

People

No people listed for this article yet.

Keep readingאיך לעשות scraping ל-IG עם Python
Read the next article

הפכו את מה שקראתם לאינטגרציה עובדת

גלו את ממשקי ה-API לנתונים חברתיים של jsonscraper, בדקו בקשות ובנו את תהליך העבודה הבא.

גלה API