「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時間程かかった。そして「''(シングルクォテーション)」派への転向を余儀なくされた。
何はともあれ、狙ったように動いた。嬉しい。
やはり成果物から逆算して勉強していく方式で、間違っていなかったと思った。