アンフォローツールコードを載せました。
こういう風に作っています。
質問あればコメントください。
Python
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from time import sleep
import time
import getpass
from selenium.webdriver.common.action_chains import ActionChains
import tkinter,tkinter.font
import os
from selenium.webdriver.common.keys import Keys
import random
import bs4
from datetime import date,timedelta
from tkinter import messagebox
#区切り線#
split_line = "-" * 50
global liker
global liker_list
file_path = "profile_list.txt"
# --------------login_process-----------------
def button_click():
profile_name= input_profile_name.get()
password= input_password.get()
scroll = input_scroll.get()
driver = webdriver.Chrome(ChromeDriverManager().install())
#instagramにアクセス
driver.get("https://www.instagram.com/accounts/login/")
driver.implicitly_wait(10)
sleep(1)
#ログインID・PWを入力
elem_search_word = driver.find_element_by_name("username")
elem_search_word.send_keys(profile_name)
sleep(1)
ppassword= driver.find_element_by_name('password')
ppassword.send_keys(password)
sleep(1)
ppassword.send_keys(Keys.ENTER)
driver.implicitly_wait(10)
sleep(4)
#2段階認証の保存を選択
elem_search_word = driver.find_element_by_css_selector("button.sqdOP").click()
driver.implicitly_wait(5)
sleep(3)
#ポップアップの後でを選択
elem_search_word = driver.find_element_by_css_selector("button.aOOlW").click()
driver.implicitly_wait(2)
sleep(1)
#----読み込み---
with open(file_path, "r",encoding="utf-8") as tf:
before_liker_list = tf.read().splitlines()
print(split_line)
print(f'過去のフォロワーは')
print(len(before_liker_list))
url = f'https://www.instagram.com/{profile_name}/'
driver.get(url)
driver.implicitly_wait(15)
driver.find_elements_by_css_selector("li.Y8-fY")[1].click()
sleep(3)
li = driver.find_element_by_css_selector("div.isgrP")
# 自動スクロール
for i in range(int(scroll)): #スクロールさせたいかを入力 10スクロールで58人 100スクロールで580人 1000スクロールで5800人
driver.execute_script("arguments[0].scrollTop = arguments[0].scrollHeight", li)
time.sleep(random.randint(500,1000)/1000)
page_url = driver.page_source
soup = bs4.BeautifulSoup(page_url,"lxml")
elm = soup.find_all(class_="Jv7Aj mArmR MqpiF")
# フォロワーリスト化
after_liker_list = []
for e in elm:
after_liker_list.append(e.text)
# フォロワー名表示
# print("リスト化したフォロワーを全表示します")
print(split_line)
list(set(after_liker_list))
print(f'現在のフォロワーは')
print(len(after_liker_list))
result_liker_list = list(set(after_liker_list) - set(before_liker_list))
print(split_line)
print(f'抜けたフォロワーは')
print(len(result_liker_list))
if len(result_liker_list) ==0 :
print("フォロー解除は0でした")
for i in result_liker_list:
driver.get(f'https://www.instagram.com/{i}/')
driver.implicitly_wait(10)
sleep(3)
try:
profile = driver.find_element_by_xpath("//*[@id='react-root']/section/main/div/header/section").text
print(split_line)
print(f'https://www.instagram.com/{i}/')
print(profile)
print(split_line)
driver.implicitly_wait(10)
except:
pass
# join()で要素内容を結合
# after_liker_list = "\n".join(after_liker_list)
after_liker_list = "\n".join(after_liker_list)
with open(file_path, "w", encoding="utf-8") as f:
f.write(after_liker_list)
f.close()
# for data in after_liker_list:
# f.write("%s\n" % data)
driver.close()
#ウインドウの作成
root = tkinter.Tk()
root.title("Insta_unfollower_checker GUI")
root.geometry("250x130")
font=tkinter.font.Font(
root,size =10
)
# ID label
input_profile_name_label = tkinter.Label(text="ID" ,font=font)
input_profile_name_label.grid(row=1, column=1, padx=10,)
# input_ID
input_profile_name = tkinter.Entry(width=20)
input_profile_name.grid(row=1, column=2)
# PASSWORD
input_password_label = tkinter.Label(text="PASS")
input_password_label.grid(row=2, column=1, padx=10,)
# PASWORD欄の作成
input_password = tkinter.Entry(show="*",width=20)
input_password.grid(row=2, column=2)
# scroll
input_scroll_label = tkinter.Label(text="scroll")
input_scroll_label.grid(row=3, column=1, padx=10,)
# scroll欄の作成
input_scroll = tkinter.Entry(width=20)
input_scroll.grid(row=3, column=2)
input_scroll_text_label = tkinter.Label(text="10スクロールで93人\n100スクロールで930人\n1000スクロールで9300人")
input_scroll_text_label.grid(row=4, column=2, padx=10,)
#ボタンの作成
button = tkinter.Button(text="実行",command=button_click)
button.place(x=10, y=80)
#ウインドウの描画
root.mainloop()