【Python】Sleniumを使いInstagramいいねを自動化したい

Python

Instagramのストーリーをうまくあげられないhanabeです。

今回はPython の勉強も兼ねて、特定したハッシュタグにループでいいねできるプログラムを作成したいと思います。

※Instagramのいいねできる回数には制限があるようです。回数制限がどうなっているか定かではありませんが、500~1000くらいいいねしたところでエラーのポップアップ画面が出てきます。くれぐれも自己責任でお願いいたします。

参考にさせて頂いた記事はこちらから。

Instagramで、指定したハッシュタグで投稿された画像にすべていいねできるPythonツール作りました

https://review-of-my-life.blogspot.com/2017/12/selenium-instagram.html

目次

  • Seleniumとは
  • 実行環境
  • サンプルコード

Seleniumとは

Seleniumとは、ブラウザを自動化して作業を行えるようなツールです。IT業界ではテスト自動化のフレームワークとして重宝されているようです。

今回はPythonの環境で使っていきたいと思います。

実行環境

今回は以下の環境で行いました。

  • Python3
  • Windows10
  • Selenium
  • Chromedriver (version81)

サンプルコード

実行したサンプルコードです。エンコーディングでURLが正しく取れることができるので、上記ブログの方のコードが大変参考になりました。途中途中time.sleep(3)を入れておくとタイムアウトエラーがないかと思われます。(多分)

# coding:utf-8
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys
import time
import urllib.parse

tagURL = "https://www.instagram.com/explore/tags/{}/?hl=ja"
tagName = "おうち時間" #タグの名前

if __name__ == "__main__":
    driver = webdriver.Chrome()
    
    driver.get('https://www.instagram.com/accounts/login/') #ログイン画面に遷移
    time.sleep(3)
    
    user = driver.find_element_by_name('username')
    user.send_keys("@xxxxxx") #ユーザー名

    password = driver.find_element_by_name('password')
    password.send_keys("xxxxxx") #パスワード


    driver.find_element_by_xpath('//*[@id="react-root"]/section/main/div/article/div/div[1]/div/form/div[4]/button/div').click() #ログイン
    time.sleep(3)

    driver.find_element_by_css_selector(".aOOlW.HoLwm").click() #検索タブ遷移
    time.sleep(3)
    
    encodedTag = urllib.parse.quote(tagName)
    encodedURL = tagURL.format(encodedTag)
    driver.get(encodedURL)
    time.sleep(3)

    mediaList = driver.find_elements_by_css_selector('div._9AhH0')[9] #最新写真
    mediaList.click()

    count = 0
    likedCounter = 1
        
    while (count < 1):
            try:
                time.sleep(3)
                driver.find_element_by_xpath('/html/body/div[4]/div[2]/div/article/div[2]/section[1]/span[1]/button').click()
                time.sleep(3)
                driver.find_element_by_xpath('/html/body/div[4]/div[1]/div/div/a[2]').click()
                time.sleep(3)
                likedCounter += 1
                count += 1
            except Exception as e:

             print("いいね {} 回".format(likedCounter))
             
             

起動batファイルも念のため

@echo off

rem 実行環境ディレクトリへ移動
pushd "C:\Users\xxxxx\Desktop\python"
rem ツール実行
python xxxxx.py

pause
exit

まとめ

勉強していて思ったことは、やっている処理は意外と単純でxpathを指定してそこのボタンをクリックして流しているだけなんだぁ、ということ。これを色々いじるとTwitterとかほかのSNSでも応用したりできそうですね。暇があったらやってみようと思います。(やらない)

コメント

Copied title and URL