ربات اینستاگرام با پایتون

سلام و عرض ادب خدمت تمام ویرگولی های عزیز

من مهدی گودرزی هستم و این اولین پستم توی ویرگوله بعد از حدود 5 ماه. می‌خوام تو این پست در مورد یکی از برنامه هایی که تو این چند وقته نوشتم، صحبت کنم.

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

برای نوشتن ربات اینستاگرام پکیج های زیادی به صورت آماده هست( برای نمونه instabot) ولی من می‌خواستم از پایه خودم رباتمو بنویسم. پس می‌تونستم از selenium استفاده کنم.

برای نصب سلنیوم می‌تونید از دستور زیر استفاده کنید.

pip install selenium

بعد از نصب این پکیج، باید این پکیج ها رو فراخوانی کنید.

from time import sleep
from selenium import webdriver
import os

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

بعد از دانلود درایور دلخواهتون و جایگذاریش توی مسیرتون، این قطعه کد رو باید استفاده کنید

path = os.path.dirname(os.path.abspath(__file__))
address = os.path.join(path , 'chromedriver.exe')

این قطعه کد میاد و درایورتون رو شناسایی می‌کنه( البته نبودنش هم فرقی به حالتون نداره)

browser = webdriver.Chrome()

این قطعه کد میاد و یه مرورگر براتون تعریف می‌کنه(دوباره می‌گم، من از کروم استفاده کردم، شما می‌تونید از هر چیز دیگه ای استفاده کنید)

بعدش ادرس اینستاگرام رو به این صورت وارد کنید تا سلنیوم براتون سرچش کنه

browser.get(&quothttps://www.instagram.com&quot)
sleep(5)

این قطعه کد هم شما رو وارد صفحه اینستاگرام می‌کنه. بینشون هم یه sleep بذارید که مشکلی پیش نیاد!

حالا می‌تونیم که یوزرنیم و پسورد رو وارد کنیم، اماااا!

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

حالا باید بپرسید که اینا رو از کجا در بیاریم؟

شما می‌تونید توی صفحتون راست کلیک کنید و inspect رو بزنید.( یا کلید ترکیبی ctrl + shit + i). بعدش این دکمه رو می‌زنید و فیلدی که میخواید رو انتخاب می کنید.

برای مثال فیلد یوزر نیم یه همچین چیزیه:

حالا روش کلیک می‌کنید و xpath رو کپی می‌کنید. و از کد زیر استفاده می‌کنید.

UsernameEntry = browser.find_element_by_xpath('//*[@id=&quotloginForm&quot]/div/div[1]/div/label/input')
UsernameEntry.send_keys(یوزر نیم شما)

اینجا اومدیم و از browser متد find_element_by_xpath رو صدا زدیم و xpath کپی شده رو اینجا پیست کردیم. بعدش هم از متد send_keys استفاده کردیم و یوزرنیم رو فرستادیم به فیلد دلخواهمون.

PasswordEntry = browser.find_element_by_xpath('//*[@id=&quotloginForm&quot]/div/div[2]/div/label/input')
PasswordEntry.send_keys(&quotpassword&quot)

همون کار هایی که با یوزرنیم انجام دادیم رو با پسورد هم انجام دادیم.(بینشون sleep هم بذارید!)

حالا باید یه کاری کنیم که روی دکمه لاگین کلیک کنه.

loginbutton = browser.find_element_by_xpath('//*[@id=&quotloginForm&quot]/div/div[3]/button')
loginbutton.click()

دوباره اومدیم و از browser متد find_element_by_xpath رو صدا زدیم و xpath دکه لاگین رو پیست کردیم. این دفعه نمی‌خوایم که چیزی رو توی فیلدی قرار بده و می خوایم روی دکمه کلیک کنه پس باید از متد click استفاده کنیم و تمام!

کل کد رو میتونید پایین مشاهده کنید.

from time import sleep 
from selenium import webdriver 
import os

path = os.path.dirname(os.path.abspath(__file__))
address = os.path.join(path , 'chromedriver.exe')

browser = webdriver.Chrome()
browser.get(&quothttps://www.instagram.com&quot)
sleep(5)
UsernameEntry = browser.find_element_by_xpath('//*[@id=&quotloginForm&quot]/div/div[1]/div/label/input')
UsernameEntry.send_keys(&quotیوزر نیم شما&quot)
PasswordEntry = browser.find_element_by_xpath('//*[@id=&quotloginForm&quot]/div/div[2]/div/label/input')
PasswordEntry.send_keys(&quotپسورد شما&quot)
loginbutton = browser.find_element_by_xpath('//*[@id=&quotloginForm&quot]/div/div[3]/button')
loginbutton.click()

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

اگر کار هایی که اینجا کردیم رو فهمیده باشد می‌شه گفت می‌تونید بقیه کار ها رو هم خودتون بکنید ولی اگر باز هم نیاز به کمک داشتید می‌تونید از کد من استفاده کنید که تو این آدرس هستش:

کد من در گیتهاب

باز هم می‌گم من نتونستم خیلی کاملش کنم و خیلی چیز های دیگه کم داره ولی اگر خواستید شما می‌تونید کاملش کنید.

در آخر هم ممنون می‌شم اگر این پست و لایک کنید و به رباتی که نوشتم تو گیت هاب استار بدید.

با تشکر، مهدی گودرزی