【2021年11月最新】インスタグラムの自動いいねプログラムbyPython

こんにちは、ウチダです。

以前、インスタグラムの自動いいねプログラムを作ったことを紹介しました。

(参考:インスタの自動いいねプログラムを使って愛媛県での認知度アップにチャレンジ!

久しぶりに動かしたら、エラーが発生することに気づきました。

調べた結果、インスタグラムのCSSのclassネームが変わっていました。

今回はプログラムを修正したので、コードを紹介します。

インスタグラムのCSSが変更されていた!プログラムを修正しよう

インスタグラムのHTMLが変更されていた!プログラムを修正しよう

エラーが発生していたのは、投稿を次へに送るボタンをクリックするところです。

以前はclass=’coreSpriteRightPaginationArrow’でした。

しかし、いまはclass=’ l8mY4 ‘に変わっているではありませんか。

(※2021年11月時点)

次の投稿に送れず、延々といいねと解除を続けるプログラムに・・・

コードを直します。

from selenium import webdriver #webページを操作するライブラリのインポート
from selenium.common.exceptions import WebDriverException #例外クラスのインポート
from selenium.webdriver.common.keys import Keys #特殊なキークラスのインポート
from selenium.webdriver.common.action_chains import ActionChains 
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
from time import sleep #休憩
import random #乱数作成

def login(user, psw):
    driver.get('https://www.instagram.com/?hl=ja') #instagramのサイトにアクセスする
    sleep(1)
    
    driver.find_element_by_name('username').send_keys(user) #メールアドレスを記入
    sleep(1)
    driver.find_element_by_name('password').send_keys(psw) #パスワードを記入
    sleep(1)
     #ログインボタンを押す 
    driver.find_element_by_class_name('L3NKy       ').click() #ログインボタンを押す
    sleep(random.randint(2, 5)) #2〜5秒停止
    print(user+'にログインしました。')
    sleep(1)

def tagsearch(tag):
    instaurl = 'https://www.instagram.com/explore/tags/' #タグ検索用のリンク
    driver.get(instaurl + tag) #タグを検索
    sleep(random.randint(2, 10)) #2〜10秒停止
    print(tag+'のタグで検索しました。')
    sleep(1)


def clicknice():
     #_9AhH0というCSSタグをもつデータをリスト型で取得し、10番目を選択する
    target = driver.find_elements_by_class_name('_9AhH0')[10]
    #10番目が新着の1番最初にくる
    #ActionChainsクラスのコンストラクタの引数に、対象driverを指定してインスタンスを作成
    actions = ActionChains(driver) 
    actions.key_down(Keys.CONTROL) #キーボードを押下した状態のままにする「key_down」
    #Controlキーを押下しながら移動→表示件数の最下層まで移動する
    #最後に「perform」を実行することで、これまでのメソッドをビルドした後、実行していきます。
    actions.perform() 
    print('投稿を表示しました。')
    sleep(1)
    
    try:
        #_9AhH0というCSSタグをもつデータをリスト型で取得し、9番目を選択する
        driver.find_elements_by_class_name('_9AhH0')[9].click() 
        #9番目は人気投稿の最後
        sleep(random.randint(2, 10)) #2〜10秒停止
        
       #fr66nというCSSタグをもつデータを選択し、クリックする
        driver.find_element_by_class_name('fr66n').click() 
        #fr66nはいいねボタン
        print('いいねしました。')
        sleep(1)

    except WebDriverException:
        print('エラーが発生しました。')
        return
    
    for i in range(random.randint(70, 100)): #70〜100回繰り返す
        try:
            driver.find_element_by_class_name('l8mY4').click() 
            #l8mY4というCSSタグをもつデータを選択し、クリックする
            # l8mY4が次の投稿に移る。
            sleep(random.randint(random.randint(2, 5), random.randint(10, 15))) #2〜5秒から10〜15秒の間停止する

        except WebDriverException:
            print('エラーが発生しました。')
            sleep(5)

        try:
            driver.find_element_by_class_name('fr66n').click()
            #fr66nはいいねボタン
            print('いいねしました。')
            sleep(2)
        except WebDriverException:
            print('エラーが発生しました。')

if __name__ == '__main__':

    taglist1 = ['愛媛', 'followme','いいね','ありがとう','感謝','ランチ','ごはん']


users1 = ['XXXXXXX'] #IDを入力
psws1 = ['ZZZZZZZ'] #パスワードを入力
    
#headlessモードで実行する
options = Options()
options.binary_location = '/usr/bin/firefox'
options.add_argument('-headless')
    
for user,psw in zip(users1,psws1):
 #Firefoxを操作する
    driver = webdriver.Firefox(options=options) 
    sleep(1) 
 #関数loginを呼び出す
    login(user, psw) 
        
 #関数tagsearchを呼び出す
    tagsearch(random.choice(taglist1)) 
    clicknice() #関数clickniceを呼び出す
        
    driver.close() #サイトを閉じる
    print('ログアウトしました。')
    sleep(5)

これをコピペして、FireFoxとGeckodriverを用意したら自動いいねが使えます。

余談ですが、インスタのサイトにはdiv class=’ l8mY4 ‘と表示されています。

前後に半角スペースがあるので、Pythonのコードも

driver.find_element_by_class_name(‘ l8mY4 ‘).click()

とスペースを入れたら、エラーになりました。

Pythonコードにはスペースはいらないようです。

また、プログラムがちゃんと動くことも確認しました。

インスタグラムの自動いいねプログラム

インスタはときどきCSSが直されるんですかね。

イタチごっこになる気がします。

もしPythonを独学で身につけるなら、こちらの本がおすすめです。

演習問題つきなので、とっても定着しやすいと思います。

WordやExcelを操作するプログラムのアイディアもあって、仕事に便利です。

ここまで読んでくださりありがとうございました。^^

1995年生まれ、佐賀県出身。 高専を卒業して大手化学メーカーの研究職に就職するが、投資で1200万円作ったので好きなことをやろうと決め、5年で退職する。 現在は保険代理店に勤めながらお金から自由になる仕組みづくりに挑戦している。 趣味は国内旅行。「コロナが明けたら旅行に行こう」が妻との合言葉。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA