Instagramのストーリーをうまくあげられないhanabeです。
今回はPython の勉強も兼ねて、特定したハッシュタグにループでいいねできるプログラムを作成したいと思います。
※Instagramのいいねできる回数には制限があるようです。回数制限がどうなっているか定かではありませんが、500~1000くらいいいねしたところでエラーのポップアップ画面が出てきます。くれぐれも自己責任でお願いいたします。
参考にさせて頂いた記事はこちらから。
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でも応用したりできそうですね。暇があったらやってみようと思います。(やらない)
リンク
コメント