在Python中,可以使用Tkinter庫來實現GUI應用程序,包括多窗口管理。以下是一個簡單的示例,展示了如何使用Tkinter創建一個具有多個窗口的爬蟲應用程序:
import tkinter as tk
from tkinter import ttk
import requests
from bs4 import BeautifulSoup
class WebScraperApp:
def __init__(self, root):
self.root = root
self.root.title("Web Scraper")
# 創建第一個窗口
self.frame1 = ttk.Frame(self.root, padding="10")
self.frame1.grid(row=0, column=0, sticky=(tk.W, tk.E, tk.N, tk.S))
ttk.Label(self.frame1, text="Enter URL:").grid(row=0, column=0, padx=5, pady=5)
self.url_entry = ttk.Entry(self.frame1)
self.url_entry.grid(row=0, column=1, padx=5, pady=5)
self.scrape_button = ttk.Button(self.frame1, text="Scrape", command=self.scrape_url)
self.scrape_button.grid(row=1, column=0, columnspan=2, pady=10)
# 創建第二個窗口
self.frame2 = ttk.Frame(self.root, padding="10")
self.frame2.grid(row=1, column=0, sticky=(tk.W, tk.E, tk.N, tk.S))
self.result_label = ttk.Label(self.frame2, text="")
self.result_label.pack()
def scrape_url(self):
url = self.url_entry.get()
if url:
response = requests.get(url)
soup = BeautifulSoup(response.content, "html.parser")
# 這里可以添加解析網頁內容的代碼
result = f"Scraped content from {url}"
self.result_label.config(text=result)
else:
self.result_label.config(text="Please enter a URL.")
if __name__ == "__main__":
root = tk.Tk()
app = WebScraperApp(root)
root.mainloop()
在這個示例中,我們創建了一個名為WebScraperApp
的類,它接受一個Tkinter根窗口作為參數。我們在__init__
方法中創建了兩個框架(frame1
和frame2
),分別用于輸入URL和顯示抓取結果。我們還添加了一個按鈕,當點擊該按鈕時,會調用scrape_url
方法來抓取URL的內容并顯示在第二個窗口中。
這個示例僅用于演示目的,實際應用中可以根據需要擴展和優化。例如,可以使用線程來避免阻塞UI線程,或者根據用戶輸入的URL動態創建多個窗口來管理不同的網頁。