こんにちは。インスタでフォロワーを増やしたいですよね!
そのためには自分のアカウントと共通の系統のアカウントに対してフォローしたりいいねしたりするのが効果的です。
ですが毎日いいねしてもどんどん投稿は増えていきます。追いつかない。。。
そんなときにはいつもどおりPythonの出番です!
めんどくさい単調な作業はぜーんぶPythonにまかせちゃいましょう。
今日は別記事でも紹介したSeleniumを使ったInstagramでの自動いいねボットを作りたいと思います。
ただ、使うのに毎回コマンドプロンプトでPythonスクリプトを実行するのはめんどくさいと思われる方も多いと思うので最終的にはGUIにしたいと思っています。
※GUI: 画面操作が可能なアプリケーション

じゃあ実際にコードを書いて作ってみましょうか。

はーい!よろしくです!
Seleniumの準備ができていない方は以下の記事で準備をしてください。
Instagram自動いいね

まずは先人たちの知恵をつかってインスタの自動いいねを実装していきたいと思います。

え!さっそく他力本願なの!?
他力本願ですみません。しかし!効率よくシステムを作るためにマネする知恵をお借りすることは、その先により良いものを作る上では必須です!ありがたくお借りしましょう!!(都合がいい脳です。。)
参考にさせていただくのは、すごくわかりやすかったCaliphさんの記事です。
【Python & selenium】インスタの自動いいねプログラムでフォロワーを増やそう!instagram
では順番に実装して実行していきましょう!
Instagramへのアクセス

SeleniumでInstagramのWebページにアクセスできるようにしましょう。

どーしたらいいですか??

instagram_nice.pyというファイルを作成して以下のコードをコピペしてください。
以下のコードをSelenium用のChrome Driverと一緒のディレクトリにinstagram_nice.pyファイルを作成してコピペしてください。
from selenium import webdriver
from selenium.common.exceptions import WebDriverException
from selenium.webdriver.common.action_chains import ActionChains
import time
import random
def login():
# Instagramのログインページを指定
driver.get('https://www.instagram.com/accounts/login/?source=auth_switcher')
time.sleep(1)
if __name__ == '__main__':
# Macの方用のChrome Driverのパスの設定
driver = webdriver.Chrome('./chromedriver')
time.sleep(1)
# ログイン
login()
いろいろとimportしています。
1行目のwebdriverはChrome Driverなどブラウザを使うために入れています。
2行目のWebDriverExceptionはエラーが起こったときなどの例外処理用。
3行目のActionChainsはマウスやキー操作を実行するためです。
4, 5行目は一時停止をするためのtimeや乱数を使ってランダム要素を付加するためのrandomです。
(後々使います。)
つづいてlogin()メソッドを作成。
アクセスするURLをdriver.getの引数に渡して上げることでWebサイトにアクセスできます。
そしてmainではChrome Driverのパスを引数にwebdriver関数をdriver変数に入力。
(Chrome DriverのパスはWindowsの方は以下のように.exeファイルを指定してください。)
# Macの方
driver = webdriver.Chrome('./chromedriver')
# Windowsの方
driver = webdriver.Chrome('./chromedriver.exe')
そしてlogin()メソッドを呼び出してインスタへアクセスします。


わ!本当に自動でアクセスできた!なんてことないことだけどすごいネ。
Instagramへ自分のアカウントでログイン

次は実際にログインしてみましょう。

追加箇所って書いてるところを追加したらいいですね!
追加箇所で囲った範囲を先程のコードに追記しましょう。
IDとパスワードは実際にみなさまがお使いのInstagramアカウントのものに置き換えてください。
from selenium import webdriver
from selenium.common.exceptions import WebDriverException
from selenium.webdriver.common.action_chains import ActionChains
import time
import random
def login(username, password, driver):
driver.get('https://www.instagram.com/accounts/login/?source=auth_switcher')
time.sleep(1)
### 追加箇所 Start ###
# メアドとパスワードを入力
driver.find_element_by_name('username').send_keys('自分のID')
time.sleep(1)
driver.find_element_by_name('password').send_keys('自分のパスワード')
time.sleep(1)
# ログインボタンを押す
driver.find_element_by_class_name('L3NKy').click()
time.sleep(1)
### 追加箇所 End ###
if __name__ == '__main__':
# いいねの動きに対するパラメータ
username = '自分のID'
password = '自分のパスワード'
# Chrome Driverを起動
driver = webdriver.Chrome('./chromedriver')
time.sleep(1)
# ログイン
login(username, password, driver)
先程書いたlogin()メソッドにメールアドレスとパスワードをusernameとpasswordという要素に渡すために、driver.find_element_by_name(‘***’).send_keys(‘***’)を使っています。
そして入力し終えたら、ログインボタンをクリックです。
クリック動作はdriver.find_element_by_class_name(‘***’).click()で***に指定した名前の要素をクリックします。
では実行してみましょう。
ユーザーネームとパスワードが自動で入力されてからログインボタンが押され、ログインしたあと以下のような画面で止まります。

指定したハッシュタグを検索

ログインできたら次は指定したハッシュタグで検索をしてみましょう。

これでいいねする投稿を見つけに行くんだネ!
ログインまでできたら次はいいねしたい投稿を表示させるためにもハッシュタグを検索しましょう。
ここからは表記するコードを短くするためにもimportやすでに作ったメソッドを省略していきます。(login()メソッドなど)
def tagsearch(tag, driver):
# tagで渡ってきたハッシュタグのページにアクセス
tagurl = 'https://www.instagram.com/explore/tags/'
driver.get(tagurl + tag)
time.sleep(1)
if __name__ == '__main__':
# いいねの動きに対するパラメータ
username = '自分のID'
password = '自分のパスワード'
# 検索するハッシュタグを指定する。
taglist = ['camera']
# Chrome Driverを起動
driver = webdriver.Chrome('./chromedriver')
time.sleep(1)
# ログイン
login(username, password, driver)
# ハッシュタグで検索
tagsearch(taglist[0], driver)
指定したハッシュタグのページにアクセスするtagseach()メソッドを追加しましょう。
instaurl変数にタグ検索のURLのフォーマット’https://www.instagram.com/explore/tags/’を入れます。
これに特定のタグを追加してdriver.get()でアクセスします。
タグのリストとしてtaglistを作っておきましょう。(わたしはカメラが好きなのでcameraを。。)
するとログインした後にタグを検索して#cameraのページに移動しましたね!


おぉ〜おしゃれだネ!ここまでできるとやってる感すごい!
投稿をいいねしよう!

さていよいよ本命のいいねをしてみましょう。

これで自分じゃなくてロボットさんにいいねを押してもらえるんですね!
いいねをするアクションを実装していきましょう。
def pushnice(driver):
# 最新の投稿が見える位置まで移動
target = driver.find_elements_by_class_name('_9AhH0')[10]
actions = ActionChains(driver)
actions.move_to_element(target)
actions.perform()
time.sleep(1)
# 最新の投稿の1枚目をクリックしていいねを実行
driver.find_elements_by_class_name('_9AhH0')[9].click()
time.sleep(1)
driver.find_element_by_class_name('fr66n').click()
if __name__ == '__main__':
# いいねの動きに対するパラメータ
username = '自分のID'
password = '自分のパスワード'
# 検索するハッシュタグを指定する。
taglist = ['camera']
# Chrome Driverを起動
driver = webdriver.Chrome('./chromedriver')
time.sleep(1)
# ログイン
login(username, password, driver)
# ハッシュタグで検索
tagsearch(taglist[0], driver)
# いいね
pushnice(driver)
Instagramのページを見ていただいたらわかるように、はじめの9枚の写真は人気の投稿で、その続きからが最新の投稿です。
そのためクラスはHTML内に複数存在するので10番目の投稿が見えるように、11枚目の投稿を(‘_9AhH0’)[10]を指定してその投稿にカーソルをもっていくmove_to_element()を用います。
(いきなり10枚目の[9]を指定するとクリックがうまくいかないです。)
そして10枚目が見えたら[9]をクリックして、いいねのクラスをクリックしていいね完了です!


うわ!ほんとに勝手にいいねが押された!

いいねができたので続きは第2回で解説していきたいと思います!
次は実際にループさせて連続でいいねさせていきます。
ではでは。
コメント