خانه / علم داده / دست به کد / دست به کد : تحلیل آماری اینستاگرام برای کاربران فارسی – بخش اول
Instagram-Analytics-012

دست به کد : تحلیل آماری اینستاگرام برای کاربران فارسی – بخش اول

با تغییر سیاستهای امنیتی اینستاگرام، امکان استفاده از مقاله زیر برای علاقه مندان فراهم نیست و باید با روشهای جایگزین مانند استخراج اطلاعات از صفحات وب افراد، به تحلیل اینستاگرام پرداخت.

چند روز پیش مطلبی خواندم راجع به تحلیل آماری پستهای اینستاگرام و پاسخگویی به این سوال که آیا تعداد برچسب های در هر پست ، تاثیری در افزایش تعداد لایک ها دارد یا نه.

کنجکاو شدم که خودم یک تحلیل آماری روی اینستاگرام انجام بدهم و اطلاعات کاربران و پستها را در مرحله اول جمع آوری و در مرحله دوم آنها را تحلیل کنم و به سوالاتی از قبیل زیر بتوانم پاسخ آماری مناسبی پیدا کنم :

  • متوسط تعداد پستهای کاربران ایرانی در یک هفته چقدر است ؟
  • میزان لایک پستها با تعداد برچسب ها (هش تگ ها) ارتباطی دارد یا نه ؟
  • چه زمان از شبانه روز بیشترین فعالیت را در اینستاگرام داریم ؟
  • لایک کردن پستهای دیگران توسط یک کاربر،  تاثیری در میزان لایک شدن پستهای او دارد یا نه ؟
  • چه برچسب هایی بیشترین رواج را در بین ایرانیان دارند ؟
  • غیر از سلبریتی ها و افراد ، چه موضوعاتی بیشترین محبوبیت را در بین کاربران دارد ؟
  • کدام شهرهای ایران به نسبت جمعیتشان ، فعالیت بیشتری در اینستاگرام دارند ؟
  • موضوع روز و داغ الان جامعه چیست ؟
  • …………..

موضوعات و سوالات مختلفی که می توان راجع به این شبکه اجتماعی مبتنی بر عکس که در ایران به صورت قانونی در حال فعالیت است ، پرسید و با جمع آوری و تحلیل داده های اینستاگرام،‌ به آنها پاسخ گفت.

با چند پرسش و جوی ساده در اینترنت ، راه حل ساده ای برای استخراج اطلاعات پیدا کردم که در بخش اول این آموزش، این یافته ها را به همراه کدهای مورد نیاز و اطلاعاتی که جمع آوری کرده ام را در اختیار علاقه مندان قرار می دهم که بتوان به راحتی به جمع آوری داده پرداخت و در مرحله بعد روی آنها شروع به تحلیل نمود.

پیش نیازها و ابزارهای لازم

در گام اول نیاز دارید که یک اکانت در اینستاگرام داشته باشید. بعد از ورود به اینستاگرام ، برای اینکه بتوانید به استخراج اطلاعات بپردازید، نیاز دارید که یک برنامه کاربردی در بخش توسعه گران اینستاگرام ایجاد کنید. این کار را هم انجام دهید. آدرس سایت را هم می توانید یک آدرس غیر معتبر فعلاً وارد کنید هر چند برای کار حرفه ای با اینستاگرام ، حتما به یک آدرس معتبر نیاز خواهید داشت.  بعد از ساخت یک برنامه کاربردی در اینستاگرام ،‌ شماره مشتری خود یا همان Client ID را جایی ذخیره کنید که با شماره مشتری ای که در فایلهای برنامه قرار داده ام ، جایگزین کنید .

کدها را با پایتون نوشته ام و اگر قصد تغییر در آنها و یا اجرای مجدد آنها را دارید،‌ نیاز به نصب خود پایتون (نسخه ۲ یا ۳) و محیط برنامه نویسی پای چارم (که نسخه رایگان هم دارد ) را دارید.

اگر پایتون کار نکرده اید اصلا نگران نباشید، کدهای پایتون به قدری ساده هستند که با همین کدهای پروژه دستتان راه می افتد اما اگر می خواهید مروری بر پایتون داشته باشید، به منابعی که در این مقاله اشاره شده است، رجوع کنید. فقط یادتان باشد که در پایتون فضاهای خالی بسیار مهم هستند و یک اسپیس کم یا زیاد برنامه را دچار خطا می کند.

تنها کتابخانه ای که در این مرحله نیاز دارید نصب کنید کتابخانه langdetect و requests روی پایتون است که به کمک اولی، زبان یک متن را تشخیص می دهیم و ارسال درخواست به یک آدرس اینترنتی را هم با کمک کتابخانه دوم انجام میدهیم .

برای نصب آن هم در پای چارم وارد بخش تنظیمات شوید و در زیر منوی تنظیمات پروژه ، مفسر پروژه را انتخاب کنید (مفسر پروژه همان نسخه پایتونی است که قصد استفاده از آنرا دارید و روی سیستم شما نصب شده است) . اگر برای بار اول است که این صفحه را باز می کنید، یک پیام زرد رنگ در پایین پنجره نمایش داده می شود که به شما می گوید نیاز به نصب ابزارهای اولیه دارد . روی این پیام کلیک کنید تا عملیات نصب به صورت خودکار انجام شود.

insta1

بعد از این کار، از دکمه + که بالای صفحه مشاهده می کنید استفاده کنید تا وارد صفحه جستجوی کتابخانه ها شود. langdetect و requests را جستجو کرده و با زدن دکمه Install آنرا نصب کنید . (به شکل بالا رجوع کنید)

پروژه ایجاد شده را از این آدرس در گیت هاب دانلود کنید :

https://github.com/smbanaie/instagram_analysis

بهترین راه دانلود آن هم البته این است که اگر یک اکانت در گیت هاب دارید و با آن وارد گیت هاب شده اید ، بر روی دکمه Fork روی این مخزن کد کلیک کنید تا کدها به حساب کاربری شما منتقل شود سپس پروژه را روی سیستمتان کلون گرفته و آنرا با پای چارم باز کنید . به این ترتیب تغییرات شما هم می تواند مجددا به مخزن کد خودتان در گیت هاب منتقل شود .

برای شروع کار هر چه لازم داشته ایم ، آماده شده است.

آشنایی با توابع ایستاگرام – Instagram API

قبل از شروع به کار ، بد نیست نگاهی به اطلاعاتی که ایستاگرام در اختیار ما می گذارد بیندازیم . هر چند می توانیم از کتابخانه هایی که اینستاگرام برای زبانهای برنامه نویسی مختلف نوشته است استفاده کنیم اما چون اینستاگرام یک روش فراخوانی توابع به صورت REST‌ هم در اختیار می گذارد و کافیست یک آدرس وب را فراخوانی کنیم تا اطلاعات عمومی یک کاربر خاص ، آخرین پستها راجع به یک برچسب ،‌آخرین پستهای یک کاربر ، افرادی که یک پست را لایک کرده یا کامنت گذاشته اند و … را به راحتی به دست بیاوریم . برای مشاهده لیست کامل توابعی که اینستاگرام در اختیار ما می گذارد به بخش نقاط فراخوانی یا EndPoints‌ از منوی توسعه گران اینستاگرام مراجعه کنید .

مثلا برای مشاهده آخرین مطالبی که راجع به یک برچسب در ایستاگرام ارسال شده است،‌ این نقطه فراخوانی را داریم :

https://api.instagram.com/v1/tags/{tag-name}/media/recent?access_token=ACCESS-TOKEN

که البته ما آنرا به صورت

https://api.instagram.com/v1/tags/{tag-name}/media/recent?access_token=ACCESS-TOKEN

فراخوانی می کنیم . مثلا برای یافتن آخرین پستهای راجع به آنفولانزایی که جدیداً شایع شده است این آدرس را فراخوانی می کنیم :‌

https://api.instagram.com/v1/tags/آنفولانزا/media/recent?client_id=baad7b9aa14041c5bb2dc1f9b477447c

که البته اگر روی آن کلیک کنید اطلاعات را به صورت جی سان و نامرتب مشاهده می کنید .

توصیه می کنم برای مشاهده خروجی این نقاط فراخوانی حتما از افزونه Postman‌ در مرورگر کروم استفاده کنید تا خروجی را به این شکل مشاهده کنید و بتوانید هر درخواست را با توضیح مناسب برای مراجعات بعدی خودتان ذخیره کنید .

insta2

برای مشاهده آخرین پستهای یک یوزر ،‌ افرادی که یک پست را لایک کرده اند، افرادی که برای یک پست نظر گذاشته اند و نیز اطلاعات یک پست (media) که در این برنامه استفاده کرده ایم  از نقاط فراخوانی زیر استفاده کرده ایم :

https://api.instagram.com/v1/users/{user-id}/media/recent/?access_token=ACCESS-TOKEN

https://api.instagram.com/v1/media/{media-id}/likes?access_token=ACCESS-TOKEN

https://api.instagram.com/v1/media/{media-id}}/comments?access_token=ACCESS-TOKEN

https://api.instagram.com/v1/media/{media-id}?access_token=ACCESS-TOKEN

می توانید هر کدام از این لینکها را با داده هایی که از با جستجوی مطالب یک برچسب به دست می آورید (شماره شناسایی یک پست ، شماره شناسایی یک کاربر) بررسی کنید و اطلاعات مفیدی را به صورت چشمی درون postman مشاهده کنید . قبل از اینکه حتی به سراغ کد نویسی برویم .

جمع آوری اطلاعات

برای جمع آوری اطلاعات راجع به پست ها و اینکه به ازای هر پست چه تعداد برچسب و چه تعداد لایک و چه تعداد نظر داریم، استراتژی ساده زیر را پیاده کرده ام :

۱. ابتدا چند برچسب مشخص را در اینستاگرام جستجو کردم (GenerateTags.py) و از بین نتایج ، برچسب های آنها را در یک فایل ذخیره کردم (tags.txt).

همانطور که می بینید کدها بسیار ساده و گویا هستند .

insta3

نکته ای که وجود دارد در خط ۲۲ بررسی کرده ام که اگر برچسب یک برچسب فارسی باشد ، آنرا به خروجی اضافه کنم چون به دلیل نزدیک عربی با فارسی و کلمات مشترک زیادی که بین این دو زبان هست ، در نتایج جستجو ، گاهی پستهای عربی هم ظاهر می شد که سعی کردم به این صورت آنها را کنترل کنم و خط آخر هم سعی کردم تگ های تکراری را با فایل کتابخانه ای که به صورت بسیار ساده نوشته ام ، حذف کنم.

۲. در مرحله بعد ، از روی این تگ ها که تعدادشان زیاد شده است، مجددا آخرین پستهای آنها را خوانده (GetMediasFromTags.py) و پستها را در یک فایل ذخیره کردم (medias.txt) .

۳. با این کار ،‌ حدود هزاران مطلب داریم که می توانیم کاربرانی که آنها را لایک کرده اند یا کامنت گذاشته اند را استخراج کنیم (GetUserIdFromMedias.py) . با این روش سعی کرده ام که کاربران کاملا تصادفی را برای تحلیل انتخاب کنم  . (user_ids.txt)

۴. در مرحله آخر ، اطلاعات پستهای هر کاربر را استخراج می کنیم (GetInfoFromUsers.py) و در یک فایل  csv ذخیره می کنیم (info.csv) . البته اطلاعات بسیار زیادتری می توان راجع به یک کاربر و پستهای او هم ذخیره کرد مثلاً متن پستها یا برچسب ها یا تعداد دنبال کنندگان و تعداد دنبال شوندگان کاربر که آنرا به عهده خواننده می گذاریم .

در آموزش بعدی به استفاده از این داده ها و ساخت نمودارهای مختلف آماری خواهیم پرداخت ….

۱۰ نظرات

  1. سلام
    وقتی از شناسه کلاینت خودم استفاده میکنم اروور زیر رو میگیرم
    {“meta”:{“error_type”:”OAuthAccessTokenException”,”code”:400,”error_message”:”The access_token provided is invalid.”}}

    مهندسی داده :
    آدرس یوار ال تولیدی خودتان را در خروجی کنسول چاپ کنید و بفرستید تا بررسی شود البته اگر تا الان مشکلتان رفع نشده باشد.
    موفق باشید

  2. با سلام

    اینستاگرام امروزه خصوصا در بحث تجارت در کشور ما بسیار محبوب هست و بعنوان یک ابزار مفید ازش استفاده میشه.

    یک تحقیق که از افراد فعال در این حوزه میکردم، فردی گفت هفته ای ۱۵ میلیون تومان از اینستاگرام فروش داره فقط به این دلیل که به خوبی می دونست چطور از این ابزار استفاده کنه. تعداد فالوور هاش هم در حدود ۵ هزار بود که چندان زیاد نبود ولی استفاده بهینه ای از این ابزار برای تجارت خودش میکرد.

    لطفا مطالب بیشتری در این زمینه بگذارید، بسیار مشتاقم.

    سپاس

  3. سلام
    کلاینت آی دی که به من میده هم مانند یگانه خانم با پیغام خطا مواجه میشم..

    ممکنه بفرمایید چه مواردی را انجام میدهید ؟
    من هم اکانت اینستاگرام رو خصوصی و غیرخصوصی کردم
    تمامی فیلدهای ثبت نام را پر و یا برخی را خالی گذاشتم
    در نهایت برای scope و گرفتن access_oken یعنی basic+public_content+follower_list+comments+relationships+likes را وارد کردم و authorize کردم اما هیچ کدام جواب نداد!

    ممکنه یوزرهای جدید api با این مشکل مواجه شده باشن بعد از آپدیتی که انجام داده ؟

     

    من حتی با access_oken هم مانند داکیومنت اینستاگرام کار می کنم باز اطلاعات رو کامل نمیده و فقط بعضی اطلاعات شخصی یوزر خودم یا پست هام رو میگه که اونم باز توش کامنت ها رو نشون نمیده یا یک سری دیتاها رو خالی میده

    • سلام
      متاسفانه اینستاگرام تغییرات بنیادینی در نحوه فراخوانی توابع توسط برنامه نویسان داده است و سطح امنیت آنرا به قسمی بالا برده است که شما تنها مجاز به مشاهده پستهایی هستی که صاحبان آنها به اپ شما اجازه دسترسی را داده باشند که بسیاری از کاربردهای اینستاگرام را برای تحلیل غیر فعال می کند.

  4. پس کی اموزش سری دوم رو میذارید ؟

    • با سلام
      متاسفانه در چند ماه اخیر اینستاگرام ، سیاست های برنامه نویسی خود را تغییر داده است و مقاله حاضر دیگر کاربرد چندانی ندارد . بخاطر مسایل امنیتی دسترسی عمومی به پستها برای کاربردهای معمولی غیرفعال شده است.

  5.  

    سلام  من در پایان نامم باید از  Apiاینستاگرام استفاده کنم اما سیاست های اینستاگرام تغییر کرده ومن نمی دونم باید چیکار کنم  دوستان لطفا راهنمایی کنید ممنون

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

Time limit is exhausted. Please reload CAPTCHA.