「1日目」で、Instagramのいいね自動化に目を付けた私。

 

「2日目」にして、存外簡単に完成した。(コード自体の完成度は別として)

 

備忘録の意味も込めて、処女作のコードを捧げる。

 

from selenium import webdriver

import time

import random

 

#各種情報を記入

user_name = "自分のユーザーネームを記入" #ID(ユーザネーム)

password = "自分のパスワードを記入"     #パスワード

tag = "検索したいタグを記入"                  #検索対象のタグ

count_Max = 100              #「いいね!」を繰り返す上限回数

 

like_counter = 0

 

#ドライバを起動

driver = webdriver.Chrome('自身のドライバの保存場所を記入')

 

#目的のサイト(instagram)にアクセス

driver.get("https://www.instagram.com/accounts/login/?source=auth_switcher")

time.sleep(0.1)

 

#IDとパスワードを入力

driver.find_element_by_name("username").send_keys(user_name)

time.sleep(0.1)

driver.find_element_by_name("password").send_keys(password)

time.sleep(0.1)

 

#「ログイン」ボタンを押す

driver.find_element_by_class_name("L3NKy ").click()

driver.implicitly_wait(10)

 

#「情報を保存」ボタンを押す

driver.find_element_by_xpath('//*[@id="react-root"]/section/main/div/div/div/div/button').click()

driver.implicitly_wait(10)

 

#「お知らせをオンにする」ボタンを押す

driver.find_element_by_xpath('/html/body/div[4]/div/div/div/div[3]/button[2]').click()

driver.implicitly_wait(10)

 

#指定したタグで検索

driver.get("https://www.instagram.com/explore/tags/" + tag)

time.sleep(0.2)

 

#最初の画像を見つけてクリック

driver.find_element_by_class_name("eLAPa").click()

time.sleep(1.0)

 

#「いいね!」のXpathを指定

like_path = "/html/body/div[5]/div[2]/div/article/div[3]/section[1]/span[1]/button/div/span/*[name()='svg']"

#「いいね!」の状態を確認

like_state = driver.find_element_by_xpath(like_path).get_attribute("aria-label")
 

#上限に到達するまで「いいね!」を繰り返す

while like_counter < count_Max:

    time.sleep(random.randrange(1, 3))

    if like_state == "いいね!":

        driver.find_element_by_xpath(like_path).click()

        like_counter += 1

        time.sleep(0.2)

    driver.find_element_by_class_name("coreSpriteRightPaginationArrow").click()

 

見る人が見たら、死ぬほどツッコミ所満載のコードだろう。

 

許して欲しい。初心者が学習開始から7時間後くらいに初めて書いたコードなのだ。

 

一応、もっともらしく苦労した点等を書いておくと、elementの見つけ方を、class_nameで指定したり、Xpathで指定したり、その辺りだ。

 

あと、文字入力等の際の囲いは、私は基本的には「""(ダブルクォテーション)」派だが、そのせいで、一部Xpath内の""と干渉してエラーを吐いていると気付くのに、1時間程かかった。そして「''(シングルクォテーション)」派への転向を余儀なくされた。

 

何はともあれ、狙ったように動いた。嬉しい。

 

やはり成果物から逆算して勉強していく方式で、間違っていなかったと思った。