8
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[Instagram] 自動でいいねをしてくれるシステム

Posted at

概要

指定したハッシュタグを検索して、設定した回数分「いいね」を実行するシステム
既に「いいね」をしている場合は、パスをする
※いろいろなブログを参考にして実装しました

環境

  • Windows 10 Home
  • Windows Subsystem for Linux
  • Ubuntu 18.04.2 LTS
  • Python 3.6.7
  • Chromedriver 74.0.3729.6 (win32)
  • Selenium 3.141.0.dist-info

Google Chromeのインストール

環境とバージョンが一致しないと起動しないため、注意が必要

$ wget http://chromedriver.storage.googleapis.com/74.0.3729.6/chromedriver_win32.zip

Seleniumのインストール

$ pip3 install selenium

ソースコード


import sys
import os
sys.path.append('/usr/local/lib/python3.7/dist-packages')

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import urllib.parse
import time

#Webdriver
browser = webdriver.Chrome('/mnt/c/workspace/pydev/chromedriver.exe')

BASE_URL      = 'https://www.instagram.com/'
LOGIN_URL      = BASE_URL + 'accounts/login/?source=auth_switchwer'
TAG_SEARCH_URL = BASE_URL + 'explore/tags/{}/?hl=ja'

#selectors
NO_LIKE_FLAG = "//button/span[@class='glyphsSpriteHeart__outline__24__grey_9 u-__7']"

NOTICE_BUTTON = "//button[@class='aOOlW   HoLwm ']"
LIKE_BUTTON   = "//button[@class='dCJp8 afkep _0mzm-']"

MEDIA_SELECTOR      = 'div._9AhH0'
NEXT_PAGER_SELECTOR = 'a.coreSpriteRightPaginationArrow'

#USER INFO
username = 'Instagramのユーザ名'
password = 'Instagramのログインパスワード'

#params
tagName = '指定するハッシュタグ'
likedCounter = 0
likedMax = 100 # likeのMAX値

if __name__ == '__main__':

    # ログイン画面にアクセス
    browser.get(LOGIN_URL)
    time.sleep(3)

    # ログイン情報を入力してログイン
    usernameField = browser.find_element_by_name('username')
    usernameField.send_keys(username)
    passwordField = browser.find_element_by_name('password')
    passwordField.send_keys(password)
    passwordField.send_keys(Keys.RETURN)
    time.sleep(3)

    # 通知ボタンを押下
    browser.find_element_by_xpath(NOTICE_BUTTON).click()
    time.sleep(3)

    # 指定したハッシュタグを検索
    encodedTag = urllib.parse.quote(tagName)
    encodedURL = TAG_SEARCH_URL.format(encodedTag)
    print("encodedURL:{}".format(encodedURL))
    browser.get(encodedURL)
    time.sleep(3)

    # media click
    browser.implicitly_wait(15)
    browser.find_element_by_css_selector(MEDIA_SELECTOR).click()

    # 次へボタンが表示されないか、いいねがlikedMax分いくまでいいねし続ける
    while likedCounter < likedMax:
        time.sleep(15)
        try:
            browser.find_element_by_xpath(NO_LIKE_FLAG)
            browser.find_element_by_xpath(LIKE_BUTTON).click()
            likedCounter += 1
            print("liked {}".format(likedCounter))
        except:
            #読み込まれなかったり既にいいねしているならパス
            print("pass")
            pass

        # 次へ
        try:
            browser.find_element_by_css_selector(NEXT_PAGER_SELECTOR).click()
        except:
            break
        print("You liked {} media".format(likedCounter))

実行方法

$ python3 ファイル名.py
8
13
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?