π₯ Clone Any Website with Python | GUI Based Website Downloader (Free Code + Tutorial)
Demo :
Click Video πππ
π» Features:
-
Full GUI interface
-
Auto-folder selection
-
Progress handling
-
Works with any public website
Code :
import tkinter as tk
from tkinter import filedialog, messagebox
import os
import subprocess
import threading
def download_website():
url = url_entry.get()
folder_path = folder_path_var.get()
if not url or not folder_path:
messagebox.showerror("Error", "Please enter URL and folder path")
return
# Disable button and show loading
clone_button.config(state=tk.DISABLED)
status_label.config(text="Processing... Please wait.", fg="yellow")
root.update()
def run_download():
try:
os.chdir(folder_path)
command = [
"wget",
"--mirror",
"--convert-links",
"--adjust-extension",
"--page-requisites",
"--no-parent",
"--wait=1",
"--user-agent=Mozilla/5.0",
"--random-wait",
"--execute", "robots=off",
url
]
subprocess.run(command, check=True)
messagebox.showinfo("Success", "Website cloned successfully!")
except Exception as e:
messagebox.showerror("Error", f"Cloning failed:\n{e}")
# Re-enable button and clear status
clone_button.config(state=tk.NORMAL)
status_label.config(text="")
threading.Thread(target=run_download).start()
# GUI Code
root = tk.Tk()
root.title("Advanced Website Cloner Tool")
root.geometry("500x250")
root.configure(bg="#1e1e1e")
tk.Label(root, text="Enter Website URL:", bg="#1e1e1e", fg="white").pack(pady=5)
url_entry = tk.Entry(root, width=60)
url_entry.pack(pady=5)
folder_path_var = tk.StringVar()
def browse_folder():
path = filedialog.askdirectory()
folder_path_var.set(path)
tk.Label(root, text="Select Download Folder:", bg="#1e1e1e", fg="white").pack(pady=5)
folder_frame = tk.Frame(root, bg="#1e1e1e")
folder_frame.pack()
tk.Entry(folder_frame, textvariable=folder_path_var, width=40).pack(side=tk.LEFT, padx=5)
tk.Button(folder_frame, text="Browse", command=browse_folder).pack(side=tk.LEFT)
clone_button = tk.Button(root, text="Clone Website", command=download_website, bg="#007acc", fg="white", padx=10, pady=5)
clone_button.pack(pady=15)
# Status label for processing/loading
status_label = tk.Label(root, text="", bg="#1e1e1e", fg="yellow")
status_label.pack()
root.mainloop()
Comments
Post a Comment