jsonscraper

كيفية إنشاء مراقبة يومية لمنشئي محتوى IG باستخدام Python

مسار عمل للمسوّق أو المحلل: استرجاع بيانات الملفات الشخصية العامة، وحفظ اللقطات، ورصد التغييرات دون فحص الحسابات يدويًا.

السياسة التحريرية الإبلاغ عن خطأ

تضطر فرق التسويق إلى التحقق يدويًا من عشرات الحسابات لمعرفة أيّ منشئي المحتوى المناسبين نشط، وكيف يتغير جمهورهم، ومتى حُدّث الملف الشخصي آخر مرة. وسرعان ما يصبح الجدول الثابت قديمًا: إذ تتغير أعداد المتابعين والنبذات، كما يتطلب جمع تواريخ المنشورات ومؤشرات المنشورات الفردية إعادة العمل من جديد.

المقال: كيفية إنشاء مراقبة يومية لمنشئي محتوى IG باستخدام Python
الملخص: نوضح كيفية أتمتة المراقبة اليومية لقائمة من ملفات IG العامة عبر IG Scraper API: طلب بيانات الملف الشخصي، وحفظ سجلّ للملاحظات، وإنشاء تقرير بالتغييرات.
دور الصورة: غلاف — الفكرة المحورية
القسم: 
الموضوع البصري: تصور لوحة لمسار بيانات تعرض شبكة منظمة بعناية من بطاقات ملفات تعريف عامة على وسائل التواصل الاجتماعي، تتدفق منها سجلات JSON مؤرخة إلى لوحة تحليلات بسيطة c
© jsonscraper · رسم توضيحي مولّد بالذكاء الاصطناعي

الحل العملي هو الاحتفاظ بسجل صغير للملاحظات: طلب بيانات الملفات العامة من قائمة أُعدّت مسبقًا مرة يوميًا، وحفظ الاستجابة مع وقت جمعها، ومقارنة القيم الجديدة باللقطات السابقة. يساعد هذا النهج على اختيار الحسابات لمزيد من الفحص اليدوي، وتقييم النشاط، وإعداد تقارير دورية. لكنه لا يحل محل تحليلات مالك الحساب؛ فالمعلومات العامة عن الملف الشخصي، على سبيل المثال، لا تتيح الوصول إلى مؤشرات الوصول الداخلية.

حدد أولًا ما الذي تريد تتبعه

يكفي عادةً إعداد قائمة قصيرة من الحقول للعثور على شركاء محتملين: اسم المستخدم، ومعرّف الملف الشخصي، ومؤشر التوثيق، وعدد المتابعين، وعدد المنشورات، والنبذة، ووقت الجمع. تتيح هذه القيم ملاحظة التغييرات في الملف الشخصي ومقارنة الحسابات وفق المجال المختار. وتعتمد الحقول الفعلية على استجابة API؛ لذا يجدر الاطلاع على JSON الحالي في الوثائق قبل المعالجة، وعدم افتراض وجود حقول غير مدرجة فيها.

لمتابعة نشاط المحتوى، يمكن إضافة بيانات المنشورات إلى الملفات الشخصية. وتعرض خريطة IG Scraper API مسارات منفصلة لوسائط المستخدم ومقاطع الفيديو، إلى جانب طلبات للوسائط والتعليقات. أضفها في مرحلة مستقلة بعد التحقق من الملف الشخصي: تأكد أولًا من المعلمات المطلوبة وشكل الاستجابة في Postman، ثم سجّل الحقول التي يحتاج إليها تقريرك فعلًا فقط.

من القواعد المفيدة للمراقبة تخزين الاستجابات الخام منفصلة عن الصفوف الموحّدة. يتيح JSON الخام إعادة التحقق من تفسير البيانات إذا تغيرت استجابة API؛ أما الجدول الموحّد فيسهل استخدامه في الرسوم البيانية والفلاتر. وفي الحالتين، احفظ وقت الطلب للتمييز بين القيمة الحالية والقيمة التاريخية.

اربط IG Scraper API

العنوان الأساسي لـ IG API لدى jsonscraper هو https://ig.jsonscraper.com. وتعرض الوثائق الرسمية طلبًا لجلب الملف الشخصي باستخدام اسم المستخدم: GET /v1/user/by/username مع المعلمات username وlicense_key وcache_timeout. على سبيل المثال، تعرض الوثائق لحساب الاختبار عنوان URL من الشكل https://ig.jsonscraper.com/v1/user/by/username?username=apple&license_key=YOUR_LICENSE_KEY&cache_timeout=60. استخدم معلمة التخزين المؤقت وفق شروط المسار المحدد ومهمتك؛ إذ ينبغي أن يتناسب تواتر الاستعلامات مع سرعة التحديث التي تحتاج إليها.

للتحقق من بنية الاستجابة، افتح صفحة IG Scraper API وانتقل إلى مجموعة Postman المرتبطة بها. يتضمن الرد الناجح في المثال الحالة، وكائن ig الذي يحتوي على معرّف الملف الشخصي واسم المستخدم ومؤشر التوثيق، بالإضافة إلى طابع زمني. وتسرد الوثائق أيضًا مجموعات المسارات الخاصة بالمستخدمين والوسائط والبحث والوسوم الجغرافية والمواقع؛ ما يتيح توسيع نطاق الجمع مع اتضاح المهمة التحليلية.

احتفظ بمفتاح API في متغير بيئة، لا في الشيفرة المصدرية أو تطبيق العميل. وتوصي وثائق jsonscraper بتخزين المفتاح في البيئة وعدم تضمينه في إصدارات العميل. وينبغي تقييد الوصول إلى المفتاح في سير العمل؛ كأن يكون متاحًا لمهمة الجمع التي تعمل في الخلفية فقط.

مثال عملي مبسط بلغة Python

يقرأ البرنامج النصي أدناه أسماء المستخدمين من متغيرات البيئة، ويطلب بيانات كل ملف شخصي، ثم يكتبها في ملف JSONL. يناسب JSONL إنشاء نموذج أولي أوليًّا: سطر واحد لكل لقطة. ويحفظ الكود كائن الاستجابة كاملًا عمدًا، بدلًا من افتراض وجود جميع حقول الملف الشخصي دائمًا. بعد التشغيل الأول، افحص الاستجابة الفعلية، ثم أنشئ مخططًا ثابتًا للجدول.

import json
import os
import time
from datetime import datetime, timezone
from pathlib import Path
from urllib.parse import urlencode
from urllib.request import Request, urlopen

API_KEY = os.environ["JSONSCRAPER_LICENSE_KEY"]
USERNAMES = [name.strip() for name in os.environ["IG_USERNAMES"].split(",") if name.strip()]
BASE_URL = "https://ig.jsonscraper.com/v1/user/by/username"
OUTPUT = Path("instagram_profiles.jsonl")


def fetch_profile(username: str) -> dict:
    query = urlencode({
        "username": username,
        "license_key": API_KEY,
        "cache_timeout": 60,
    })
    request = Request(f"{BASE_URL}?{query}", headers={"Accept": "application/json"})
    with urlopen(request, timeout=30) as response:
        return json.load(response)


with OUTPUT.open("a", encoding="utf-8") as output:
    for username in USERNAMES:
        collected_at = datetime.now(timezone.utc).isoformat()
        try:
            payload = fetch_profile(username)
            row = {
                "collected_at": collected_at,
                "requested_username": username,
                "ok": True,
                "payload": payload,
            }
        except Exception as exc:
            row = {
                "collected_at": collected_at,
                "requested_username": username,
                "ok": False,
                "error": str(exc),
            }

        output.write(json.dumps(row, ensure_ascii=False) + "\n")
        output.flush()
        time.sleep(1)

قبل التشغيل، اضبط الإعدادات في البيئة:

export JSONSCRAPER_LICENSE_KEY="مفتاحك"
export IG_USERNAMES="creator_one,creator_two,creator_three"
python monitor.py

الغرض من التأخير في المثال هو معالجة القائمة تباعًا بوتيرة أكثر اعتدالًا؛ فهو ليس حدًا معلنًا لواجهة API. عند إعداد جدول تشغيل فعلي، اضبط التواتر ومعالجة الأخطاء وفق خطتك والوثائق ومدى الحاجة إلى تحديث البيانات. وإذا انتهى الطلب بخطأ، يساعد السجل المحفوظ على اكتشاف المشكلة بدلًا من تخطي الحساب بصمت.

وحّد البيانات بعد التحقق من الاستجابة

بعد فحص الاستجابة للمسار المستخدم، استخرج مجموعة ثابتة من الأعمدة. يمكن، مثلًا، أن يتضمن جدول الملاحظات وقت الجمع واسم المستخدم ومعرّف الملف الشخصي وحالة الاستجابة التي جرى التحقق منها والعدادات المطلوبة، إن كانت موجودة في JSON. وحدد بوضوح طريقة التعامل مع كل حقل مفقود: حفظ قيمة فارغة، أو وضع علامة على السجل بأنه غير مكتمل، أو إرساله لإعادة المراجعة.

لا تستبدل قيمة الأمس بقيمة اليوم. فسجل اللقطات ضروري لحساب الفروق بين التواريخ ورصد التغييرات. احسب الفرق في عدد المتابعين بين الملاحظات الناجحة المتتالية للملف الشخصي نفسه؛ وتُفضّل المقارنة باستخدام معرّف ثابت على المقارنة باسم المستخدم وحده، إذ قد يتغير الاسم.

يستحسن الاحتفاظ بالاستجابة الخام لمدة محدودة إذا كانت تتضمن بيانات أكثر مما يحتاج إليه التقرير. وينبغي ألا يضم الجدول الموحّد إلا الحقول التي تبررها المهمة المحددة. وهذا يقلل عادةً حجم البيانات في أبحاث منشئي المحتوى، ويسهّل توضيح سبب جمع المعلومات.

أضف تشغيلًا يوميًا وإشعارًا

يمكن تشغيل البرنامج النصي على الخادم باستخدام مجدول المهام، مثل cron، أو في أداة أتمتة وفق جدول زمني ومن خلال طلب HTTP. ويتكون المسار الأساسي من مشغّل، وقراءة قائمة الملفات الشخصية، واستدعاء المسار لكل ملف بالتتابع، والتحقق من نجاح الاستجابة، وتسجيل صف في وحدة التخزين، ثم إعداد ملخص. وفي n8n أو Make، يمكن تقسيم المراحل نفسها إلى عقد منفصلة بحيث لا يؤدي تعطل ملف شخصي واحد إلى إيقاف المجموعة كلها.

لإعداد التقرير، احسب مؤشرات بسيطة: عدد الملفات الشخصية التي عولجت بنجاح، والحسابات التي تغير عدد متابعيها مقارنةً بآخر لقطة ناجحة، وموعد آخر تحديث للسجل. وتساعد قائمة الأخطاء المنفصلة على اكتشاف أسماء المستخدمين غير الصحيحة والملفات التي يتعذر الوصول إليها ومشكلات الطلب المؤقتة بسرعة. وإذا أضفت بيانات المنشورات، فاتفق أولًا على عمق السجل المطلوب ومجموعة الحقول، ثم أضف المسار المناسب من الوثائق.

ومن المفيد ضبط التخزين المؤقت عن قصد. وتصف الوثائق cache_timeout بأنه معلمة في المسارات المدعومة لإعادة استخدام النتائج الحديثة. وفي تقرير مقارنة يومي، اضبط الوضع بما يتوافق مع مستوى حداثة البيانات المطلوب؛ ولا تخلط بين استجابة مخزنة مؤقتًا ونقطة قياس جديدة من دون توضيح ذلك في السجل.

ما الذي ستكشفه هذه المراقبة؟

بعد تراكم اللقطات، سيصبح لدى الفريق سجل موثّق للملاحظات على الملفات العامة المختارة. ويمكن مقارنة تغيرات العدادات، والعثور على السجلات التي لم تُحدّث منذ مدة، وإعداد قائمة قصيرة من الحسابات للتقييم اليدوي. وإذا كان جمع الوسائط متاحًا للمسار والمهمة المحددين، فيمكن إضافة المنشورات إلى الملفات الشخصية وتحليل وتيرة النشر أو أشكال المحتوى، شريطة أن تؤكد الوثائق الحقول المحددة.

استخدم المقاييس أداةً لتصفية العمل البحثي، لا لاتخاذ قرار آلي بشأن التعاون. فعدد المتابعين وحده لا يصف مدى ملاءمة الجمهور للعلامة التجارية، أو جودة المحتوى، أو الجدوى التجارية لمنشئ المحتوى. أضف مراجعة بشرية للملف الشخصي، واحتفظ بمعايير الاختيار منفصلة عن عملية جمع البيانات التقنية.

للتجربة الأولية، افتح مجموعة IG API في Postman، واضبط المفتاح، ونفّذ طلب الملف الشخصي. ثم انقل المعلمات التي تحققت منها إلى البرنامج النصي أو الأتمتة. وبذلك تحصل على جمع يومي قابل لإعادة التنفيذ، وسجل للتغييرات، وأساس لتقرير تحليلي، من دون الحاجة إلى البدء بإنشاء أداة مخصصة لاستخراج صفحات الويب.

People

No people listed for this article yet.

Keep readingكيفية قياس ديناميكيات محتوى المنافسين على IG: مسار API باستخدام Python
Read the next article

حوّل ما تقرأه إلى تكامل عملي

استكشف واجهات API للبيانات الاجتماعية من jsonscraper واختبر الطلبات وأنشئ سير عملك التالي.

استكشف واجهات API