كيفية تنزيل بيانات Instagram باستخدام Python

Instagram هي واحدة من أكبر شبكات التواصل الاجتماعي في العالم ، مع حوالي 1.21 مليار مستخدم اعتبارًا من عام 2021 ، أو حوالي 28 ٪ من الإنترنت ، وفقًا لـ Statista.

هذه المقالة عبارة عن دليل حول كيفية تنزيل بيانات Instagram برمجيًا من ملف تعريف باستخدام Python بطريقتين. الطريقة الأولى هي تنزيل الوسائط باستخدام Instaloader. والثاني هو كتابة نص برمجي بسيط من Python للحصول على بيانات JSON حول الملف الشخصي.

من المهم ملاحظة أن كشط البيانات قد ينتهك شروط خدمة Instagram ، ونوصيك بتنزيل البيانات من حسابك فقط.

باستخدام Instaloader

Instaloader عبارة عن حزمة Python لتنزيل وسائط Instagram. إنه سهل الاستخدام بشكل لا يصدق ويجعل استخراج البيانات وتنزيلها سريعًا وسهلاً. لبدء استخدام Instaloader ، أولاً ، قم بتثبيته باستخدام النقطة:

pip install instaloader

بمجرد التثبيت ، يمكنك استخدامه من واجهة سطر الأوامر أو كحزمة في نص برمجي Python.

لاستخدامه من سطر الأوامر ، يمكنك استخدام الأمر instaloader. على سبيل المثال ، لعرض معلومات التعليمات ، أدخل الأمر التالي في جهازك الطرفي:

instaloader --help

لتنزيل صورة الملف الشخصي للمستخدم ، أدخل الأمر بعلامة –profile ، متبوعة باسم المستخدم. مثل ذلك:

instaloader --profile <USERNAME OF THE PROFILE>

ولكن لكي يعمل هذا الأمر ، يجب عليك تسجيل الدخول أولاً. للقيام بذلك ، تقوم بتمرير خيار تسجيل الدخول بحيث:

instaloader --login <YOUR USERNAME> --profile <USERNAME OF THE PROFILE>

ما الذي يجب تنزيله

باستخدام Instaloader ، يمكنك تنزيل وسائط مختلفة. يوضح لك هذا المقتطف من صفحة الدليل جميع الأشياء المختلفة التي يمكنك تنزيلها:

  profile               Download profile. If an already-downloaded profile has been renamed, Instaloader automatically finds it by its unique
                        ID and renames the folder likewise.
  @profile              Download all followees of profile. Requires --login. Consider using :feed rather than @yourself.
  "#hashtag"            Download #hashtag.
  %location_id          Download %location_id. Requires --login.
  :feed                 Download pictures from your feed. Requires --login.
  :stories              Download the stories of your followees. Requires --login.
  :saved                Download the posts that you marked as saved. Requires --login.
  -- -shortcode         Download the post with the given shortcode
  filename.json[.xz]    Re-Download the given object.
  +args.txt             Read targets (and options) from given textfile.

لتنزيل منشورات مستخدم معين ، أدخل الأمر:

instaloader --login <YOUR USERNAME> <TARGET USERNAME>

في هذه الحالة ، يكون اسم المستخدم الخاص بك هو اسم المستخدم لحساب Instagram المصادق عليه ؛ اسم المستخدم الهدف هو الملف الشخصي الذي تريد تنزيل مشاركاته.

  كيف ترى من شاهد منشوراتك على Instagram

لتنزيل منشورات من متابعي ملف تعريف ، أدخل الأمر:

instaloader --login <YOUR USERNAME> @<TARGET USERNAME>

لاحظ الفرق بين هذا الأمر والأمر السابق هو @ قبل اسم المستخدم الهدف.

بديل لاستخدام واجهة سطر أوامر Instaloader هو استخدامه كحزمة Python. الحزمة موثقة جيدا هنا.

باستخدام Instaloader ، يمكنك تنزيل ملفات وسائط مختلفة. ومع ذلك ، إذا كنت ترغب في استخراج البيانات الوصفية مثل صفحة السيرة الذاتية للمستخدم ، فلن يكون Instaloader وحده كافيًا. باستخدام الطريقة التالية ، ستكتب Python Script لاستخراج بيانات ملف تعريف المستخدم.

كتابة نص Python لتنزيل بيانات Instagram

ملخص

في هذه الطريقة ، سنكتب نصًا بسيطًا لتنزيل بيانات Instagram بلغة Python. تعتمد هذه الطريقة على استخدام واجهة برمجة تطبيقات Instagram JSON غير معروفة نسبيًا لاستخراج البيانات من الملفات الشخصية العامة.

الطريقة التي تعمل بها واجهة برمجة التطبيقات هذه هي إذا قمت بإلحاق الاستعلام __a = 1 & __ d = 1 بنهاية عنوان URL لملف التعريف الخاص بك ، فإن Instagram يستجيب ببيانات JSON حول الملف الشخصي.

على سبيل المثال ، اسم المستخدم الخاص بي هو 0xanesu. نتيجة لذلك ، إذا قمت بتقديم طلب إلى https://instagram.com/instagram/؟__a=1&__d=1 ، فسأستعيد بيانات JSON حول ملفي الشخصي كرد.

  كيفية إنشاء مجموعة DM على Instagram

كتابة السيناريو

لتقديم الطلب في Python ، سنستخدم وحدة طلبات Python. ومع ذلك ، يمكنك أيضًا استخدام pycURL أو urllib أو أي مكتبة عميل أخرى تفضل استخدامها لإجراء طلبات HTTP. للبدء ، قم بتثبيت وحدة الطلبات باستخدام النقطة.

pip install requests

بمجرد تثبيت ذلك ، افتح ملفًا لكتابة البرنامج النصي الخاص بك واستيراد وظيفة get من وحدة الطلبات. بالإضافة إلى ذلك ، قم أيضًا باستيراد وظيفة الأحمال من json. سيتم استخدام هذا لتحليل استجابة JSON.

from requests import get
from json import loads

بمجرد قيامك باستيراد البيانات ، قم بإنشاء متغير يقوم بتخزين عنوان URL لملف تعريف Instagram الخاص بك.

url="https://instagram.com/<YOUR USERNAME HERE>"

كما ذكرنا سابقًا ، لاستخراج بيانات Instagram من ملف تعريف ، تحتاج إلى إضافة __a = 1 و __d = 1 معلمات استعلام. لتحديد ذلك ، نقوم بإنشاء كائن قاموس مع المعلمات.

params = { '__a': 1, '__d': 1 }

لتفويض الطلبات التي نقدمها ، يتطلب Instagram معرف الجلسة. في وقت لاحق ، سأوضح لك كيفية الحصول على معرف الجلسة الخاص بك. في الوقت الحالي ، ما عليك سوى وضع قيمة نائب والتي ستستبدلها لاحقًا.

cookies = { 'sessionid': '<YOUR SESSION ID HERE>' }

بعد ذلك ، حدد وظيفة سيتم تشغيلها عند نجاح الطلب.

def on_success(response):
    profile_data_json = response.text
    parsed_data = loads(profile_data_json)
    
    print('User fullname:', parsed_data['graphql']['user']['full_name'])
    print('User bio:', parsed_data['graphql']['user']['biography'])

ستأخذ الوظيفة التي حددتها في كائن الاستجابة ، وتستخرج JSON من نص الاستجابة ثم تحلل JSON في كائن. بعد ذلك ، أقوم فقط باستخراج الاسم الكامل والسيرة الذاتية للملف الشخصي.

بعد ذلك ، حدد الوظيفة التي سيتم تشغيلها إذا كان هناك خطأ.

def on_error(response):
    # Printing the error if something went wrong
    print('Something went wrong')
    print('Error Code:', response.status_code)
    print('Reason:', response.reason)

ثم نسمي وظيفة get لإجراء الطلب ، وتمرير عنوان URL والمعلمات وملفات تعريف الارتباط كوسيطات.

response = get(url, params, cookies=cookies)

ثم أخيرًا ، نتحقق من رمز حالة الخطأ. إذا كانت الحالة 200 ، فإننا نسمي وظيفة on_success. وإلا فإننا فقط نسمي الدالة on_error.

if response.status_code == 200:
    on_success(response)
else:
    on_error(response)

في هذه المرحلة ، انتهينا من كتابة الكود. ما تبقى هو الحصول على sessionid. للحصول على معرف الجلسة ، افتح Google Chrome وافتح Instagram على الويب. تأكد من تسجيل الدخول ، ثم افتح أدوات Dev باستخدام Ctrl + Shift + I أو Cmd + Shift + I.

  كيف تجعل المشاهير يتابعونك على Instagram

مع فتح Dev Tools ، افتح علامة التبويب Application.

ثم انقر فوق القائمة الفرعية لملفات تعريف الارتباط لعرض ملفات تعريف الارتباط التي يستخدمها Instagram.

بعد ذلك ، انسخ قيمة ملف تعريف الارتباط للجلسة من قائمة ملفات تعريف الارتباط التي سيتم إدراجها في لوحة أدوات التطوير.

بمجرد نسخ معرف الجلسة ، قم بلصقه في البرنامج النصي وقم بتنفيذ البرنامج النصي. في حالتي ، باستخدام Instagram كاسم مستخدم (https://instgram.com/instagram؟__a=1&__d=1) ، هذا هو الإخراج.

وبهذه الطريقة ، يمكننا تنزيل بيانات الملف الشخصي ديناميكيًا. هناك الكثير من البيانات التي يتم إرجاعها من JSON API. هذا هو الإخراج عند طباعة كل ذلك:

وهذه هي الطريقة التي تستخرج بها البيانات والمشاركات من ملفات تعريف Instagram.

الكلمات الأخيرة

في هذه المقالة ، استعرضنا كيفية تنزيل المنشورات والوسائط باستخدام Instaloader. ثم كتبنا برنامجًا نصيًا مخصصًا لاستخراج بيانات ملف JSON للملف الشخصي والتي تتضمن أكثر بكثير من مجرد محتوى الوسائط. إذا كنت قد استمتعت بهذا المشروع ، فقد ترغب في التحقق من منشورنا على Python Timeit to Time Your Code.

إذا كنت مهتمًا بالحصول على المزيد من تجربة Instagram الخاصة بك ، فاطلع على منشورنا على Qoob Stories: مراجعة مفصلة على أداة تنزيل Instagram.