jsonscraper
שווקים
חזרה ליומן

התאימו פרופיל IG לבריף הקמפיין לפי שדות שניתנים לאימות

כך תהפכו רשימת חשבונות לבדיקה חוזרת באמצעות IG Scraper API ו-Python

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

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

מאמר: התאימו פרופיל IG לבריף הקמפיין לפי שדות שניתנים לאימות
תקציר: בדקו פרופילים ציבוריים ב-IG לפני השקת קמפיין: אחזרו נתונים לפי username, השוו אותם לבריף והפיקו דוח פערים בלי להמיר נתונים חסרים לאפס.
תפקיד התמונה: תמונת שער — הרעיון המרכזי
מדור: 
נושא חזותי: צילום מערכתי: בריף קמפיין משפיענים מודפס ודוח CSV תמציתי לאימות על שולחן, עם נתוני פרופיל המיוצגים בכרטיסים פשוטים וניטרליים לשימוש
הבדיקה משווה את דרישות הבריף לשדות ציבוריים מסוימים בפרופיל.© jsonscraper · נוצר באמצעות בינה מלאכותית

הבעיה: הבריף מתיישן מהר יותר מהגיליון

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

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

אילו נתונים לבקש

מדריך הנתיבים של IG API מתאר את הנתיב GET /v1/user/by/username ואת הפרמטר הנדרש username. בתשובה שנבדקה, נתוני הפרופיל נמצאים באובייקט ig: הוא כולל username, שם מלא, ביוגרפיה, סימוני פרטיות ואימות, ומספר הפרסומים, העוקבים והחשבונות שהמשתמש עוקב אחריהם. השדות האלה מתארים תמונת מצב זמינה של הפרופיל.

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

איך לשלב את הבקשה ב-Python

תחילה שמרו את מפתח הרישיון במשתנה הסביבה JSONSCRAPER_INSTAGRAM_LICENSE_KEY. הדוגמה משתמשת בכתובת הבסיס, בנתיב, בפרמטר username ובשם המפתח license_key שאומתו. קובץ ה-CSV כולל את השדות username,min_followers,max_followers,require_public; עבור כל חשבון הסקריפט משווה את התשובה לכללים ומסמן שורות הדורשות בדיקה.

import csv
import os
import sys
import requests

BASE_URL = "https://ig.jsonscraper.com"
API_KEY = os.environ.get("JSONSCRAPER_INSTAGRAM_LICENSE_KEY")
if not API_KEY:
    raise SystemExit("Set JSONSCRAPER_INSTAGRAM_LICENSE_KEY")

# brief.csv: username,min_followers,max_followers,require_public
with open("brief.csv", newline="", encoding="utf-8") as source:
    brief = list(csv.DictReader(source))

results = []
for row in brief:
    username = row.get("username", "").strip()
    minimum_text = row.get("min_followers", "").strip()
    if not username or not minimum_text:
        results.append({
            "requested_username": username,
            "needs_review": True,
            "error": "Missing username or min_followers",
        })
        continue

    try:
        response = requests.get(
            f"{BASE_URL}/v1/user/by/username",
            params={"username": username, "license_key": API_KEY},
            timeout=30,
        )
        response.raise_for_status()
        payload = response.json()
        if payload.get("status") != "ok" or not isinstance(payload.get("ig"), dict):
            raise ValueError("Unexpected API response")
        profile = payload["ig"]

        followers = profile.get("follower_count")
        minimum = int(minimum_text)
        maximum_text = row.get("max_followers", "").strip()
        maximum = int(maximum_text) if maximum_text else None
        public_required = row.get("require_public", "").strip().lower() == "true"

        checks = {
            "username_matches": (
                isinstance(profile.get("username"), str)
                and profile["username"].lower() == username.lstrip("@").lower()
            ),
            "followers_in_range": (
                isinstance(followers, int)
                and followers >= minimum
                and (maximum is None or followers 

להרצה: python check_profiles.py. התקינו את הספרייה requests, הגדירו את משתנה הסביבה בסביבת ההרצה והניחו לצדו את brief.csv. אל תכתבו את המפתח בקוד המקור או בקובץ ה-CSV הסופי. הסקריפט מעבד את הרשימה ברצף, דבר שנוח לבדיקה ולניפוי שגיאות בקבוצות חשבונות קטנות.

למה חשוב להשאיר ערכים חסרים גלויים

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

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

איך לקרוא את התוצאה ולהפוך את הבדיקה לאוטומטית

הקובץ profile_check.csv כולל את ה-username המקורי, את השם שהוחזר, שדות ציבוריים זמינים, תוצאות של תנאים נפרדים וסימון כללי needs_review. הצוות יכול לסנן שורות לפי הסימון הזה, והמפתח יכול לשמור את הדוח באחסון או להעביר אותו לשלב הבא בתהליך ETL. לתזמון ההרצה, השתמשו במתזמן ושמרו בנפרד את תאריך ההרצה, כדי שאפשר יהיה להשוות תמונות מצב של הקמפיין.

מאמר: התאימו פרופיל IG לבריף הקמפיין לפי שדות שניתנים לאימות
תקציר: בדקו פרופילים ציבוריים ב-IG לפני השקת קמפיין: אחזרו נתונים לפי username, השוו אותם לבריף והפיקו דוח פערים בלי להמיר נתונים חסרים לאפס.
תפקיד התמונה: איור תומך 2 — היבט מסוים אחר
מדור: איך לקרוא את התוצאה ולהפוך את הבדיקה לאוטומטית
נושא חזותי: תרשים אינפוגרפי ברוסית המציג תהליך עבודה: שורות בריף ב-CSV → GET /v1/use
התרשים מציג את הדרך משורת הבריף לדוח, כולל בדיקה ידנית של נתונים חסרים.© jsonscraper · איור שנוצר באמצעות בינה מלאכותית

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

בדף IG Scraper API מופיעים כתובת הבסיס, דוגמת בקשה וקישור ל-Postman. התרחיש שלמעלה משתמש רק בשליפת פרופיל לפי username שאומתה, ואינו מניח שהבקשה מחזירה פרסומים.

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

אֲנָשִׁים

עדיין לא רשומים אנשים עבור מאמר זה.

המשיכו לקרואבדקו את פרופיל IG מול בריף הקמפיין לפני ההשקה: אימות באמצעות API
קרא את המאמר הבא

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

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

גלה API