Amazing-Python-Scripts
100 строк · 3.0 Кб
1from selenium import webdriver2from time import sleep3import datetime4from prettytable import PrettyTable5
6start = datetime.datetime.now()7
8
9table = PrettyTable()10column_names = ["Non-Followers"]11
12
13class InstaBot:14""" for login15"""
16
17def __init__(self, username, pw):18self.driver = webdriver.Chrome()19self.username = username20self.driver.get("https://instagram.com")21sleep(2)22self.driver.find_element_by_xpath(23"//input[@name=\"username\"]").send_keys(username)24self.driver.find_element_by_xpath(25"//input[@name=\"password\"]").send_keys(pw)26self.driver.find_element_by_xpath("//button[@type=\"submit\"]").click()27sleep(4)28self.url = self.driver.current_url29if self.url == "https://www.instagram.com/accounts/onetap/?next=%2F":30self.driver.find_element_by_xpath(31"//button[contains(text(), 'Not Now')]").click()32sleep(4)33self.driver.find_element_by_xpath(34"//button[contains(text(), 'Not Now')]").click()35else:36sleep(2)37self.driver.find_element_by_xpath(38"//button[contains(text(), 'Not Now')]").click()39sleep(1)40
41def get_unfollowers(self):42""" names of unfollowers43"""
44self.driver.find_element_by_xpath(45"//a[contains(@href,'/{}')]".format(self.username)).click()46sleep(2)47self.driver.find_element_by_xpath(48"//a[contains(@href,'/following')]").click()49following = self._get_names()50sleep(2)51self.driver.find_element_by_xpath(52"//a[contains(@href,'/followers')]").click()53sleep(2)54followers = self._get_names()55
56notfollowingback = [57user for user in following if user not in followers]58
59table.add_column(column_names[0], notfollowingback)60
61print(table)62
63def _get_names(self):64""" names of unfollowers65"""
66
67sleep(2)68scroll_box = self.driver.find_element_by_xpath(69'/html/body/div[5]/div/div/div[2]')70last_ht, ht = 0, 171
72# Keep scrolling till you can't go down any further73while last_ht != ht:74last_ht = ht75sleep(1)76ht = self.driver.execute_script(77"""78arguments[0].scrollTo(0, arguments[0].scrollHeight);
79return arguments[0].scrollHeight;
80""", scroll_box)81
82# Gets the list of accounts83links = scroll_box.find_elements_by_tag_name('a')84names = [name.text for name in links if name.text != '']85
86sleep(1)87
88# Closes the box89close_btn = self.driver.find_element_by_xpath(90'/html/body/div[5]/div/div/div[1]/div/div[2]')91close_btn.click()92
93return names94
95
96usr_name = input("Enter Username : ")97password = input("Enter Password : ")98
99my_bot = InstaBot(usr_name, password)100my_bot.get_unfollowers()101