Select a Subtopic
📚 Day 18: Advanced Instagram Bot Automation (Selenium + Tkinter)
Today, we'll upgrade your Instagram bot with more powerful features:
- Automated commenting on posts.
- Following users.
- Dynamic interaction based on hashtags.
- Adding a "Stop Bot" feature to pause the bot anytime.
Let's make your bot more smart, interactive, and user-friendly!
✅ What You'll Learn Today:
- Automating comments on Instagram posts.
- Automating follow/unfollow actions.
- Using hashtags to interact with posts dynamically.
- Adding a Stop Button in Tkinter to stop the bot.
🧑💻 1. Automating Comments on Instagram Posts
We'll make the bot search for a specific hashtag and comment on the first few posts.
✅ Updated `instagram_login()` Function:
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
# Function to log in and comment on posts
def instagram_login(username, password, comment_text):
driver = webdriver.Chrome(executable_path="path/to/chromedriver")
driver.get("https://www.instagram.com/accounts/login/")
time.sleep(5)
# Enter username and password
driver.find_element(By.NAME, "username").send_keys(username)
driver.find_element(By.NAME, "password").send_keys(password)
driver.find_element(By.XPATH, '//*[@id="loginForm"]/div/div[3]/button').click()
time.sleep(5)
# Search for a hashtag
driver.get("https://www.instagram.com/explore/tags/programming/")
time.sleep(5)
# Click on the first post
driver.find_element(By.CLASS_NAME, '_aagw').click()
time.sleep(3)
# Add a comment
driver.find_element(By.XPATH, "//textarea").send_keys(comment_text)
driver.find_element(By.XPATH, "//button[contains(text(), 'Post')]").click()
print("Commented on the post!")
time.sleep(3)
driver.quit()🎯 2. Automating Follow/Unfollow Actions
You can also automate the process of following or unfollowing users.
✅ Follow Users Code:
# Follow a user after login
def follow_user(username_to_follow):
search_url = f"https://www.instagram.com/{username_to_follow}/"
driver.get(search_url)
time.sleep(5)
follow_button = driver.find_element(By.XPATH, "//button[contains(text(), 'Follow')]")
follow_button.click()
print(f"Followed {username_to_follow}!")🖥 3. Tkinter GUI with "Start" and "Stop" Buttons
Let's add start and stop buttons to your Tkinter GUI to control the bot.
✅ Complete Tkinter GUI Code:
import tkinter as tk
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
import threading
# Global variable for the driver
driver = None
# Function to start the bot
def start_bot(username, password, comment_text):
global driver
driver = webdriver.Chrome(executable_path="path/to/chromedriver")
driver.get("https://www.instagram.com/accounts/login/")
time.sleep(5)
driver.find_element(By.NAME, "username").send_keys(username)
driver.find_element(By.NAME, "password").send_keys(password)
driver.find_element(By.XPATH, '//*[@id="loginForm"]/div/div[3]/button').click()
time.sleep(5)
# Navigate to a hashtag and comment
driver.get("https://www.instagram.com/explore/tags/programming/")
time.sleep(5)
driver.find_element(By.CLASS_NAME, '_aagw').click()
time.sleep(3)
driver.find_element(By.XPATH, "//textarea").send_keys(comment_text)
driver.find_element(By.XPATH, "//button[contains(text(), 'Post')]").click()
print("Commented on the post!")
# Function to stop the bot
def stop_bot():
global driver
if driver:
driver.quit()
print("Bot stopped!")
# Create the GUI
root = tk.Tk()
root.title("Instagram Bot")
root.geometry("400x300")
username_label = tk.Label(root, text="Username:")
username_label.grid(row=0, column=0, padx=10, pady=10)
username_entry = tk.Entry(root)
username_entry.grid(row=0, column=1, padx=10, pady=10)
password_label = tk.Label(root, text="Password:")
password_label.grid(row=1, column=0, padx=10, pady=10)
password_entry = tk.Entry(root, show="*")
password_entry.grid(row=1, column=1, padx=10, pady=10)
comment_label = tk.Label(root, text="Comment:")
comment_label.grid(row=2, column=0, padx=10, pady=10)
comment_entry = tk.Entry(root)
comment_entry.grid(row=2, column=1, padx=10, pady=10)
start_button = tk.Button(root, text="Start Bot", command=lambda: threading.Thread(target=start_bot, args=(username_entry.get(), password_entry.get(), comment_entry.get())).start())
start_button.grid(row=3, column=0, pady=20)
stop_button = tk.Button(root, text="Stop Bot", command=stop_bot)
stop_button.grid(row=3, column=1, pady=20)
# Run the GUI loop
root.mainloop()🎨 4. Enhancing the GUI with Styles
You can make the GUI more attractive by using fonts, colors, and layouts.
✅ Style the Buttons:
start_button = tk.Button(root, text="Start Bot", font=("Helvetica", 14), bg="green", fg="white", command=lambda: threading.Thread(target=start_bot, args=(username_entry.get(), password_entry.get(), comment_entry.get())).start())
stop_button = tk.Button(root, text="Stop Bot", font=("Helvetica", 14), bg="red", fg="white", command=stop_bot)🎯 Task for Today:
- Add commenting functionality.
- Add follow/unfollow actions.
- Implement a Stop button in the GUI.
- Test the bot using different hashtags.
Would you like me to guide you through Day 19 with more advanced features like automated DM sending and Instagram scraping? 😊