import requests import re import tkinter as tk from tkinter import messagebox from tkinter import Toplevel headers = { "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36 SLBrowser/9.0.3.1311 SLBChan/11" } def fetch_data(): urls = [f"https://www.gushiwen.cn/default_{i}.aspx" for i in range(1, 3)] gushici = [] for url in urls: response = requests.get(url, headers=headers) content = response.text titles = re.findall('(.*?)', content, re.DOTALL) authors = re.findall('

.*?(.*?)', content, re.DOTALL) dynastys = re.findall('

.*?(.*?)', content, re.DOTALL) poetics = re.findall('

(.*?)
', content, re.DOTALL) new_poetics = [''.join(re.split('<.*?>|<.*? />', p)).strip() for p in poetics] for title, author, dynasty, poetic in zip(titles, authors, dynastys, new_poetics): gushici.append({"title": title, "author": author, "dynasty": dynasty, "poetic": poetic}) # 保存到TXT文件 with open("gushi.txt", "w", encoding="utf-8") as file: for item in gushici: file.write(f"标题: {item['title']}, 作者: {item['author']}, 朝代: {item['dynasty']}, 内容: {item['poetic']}\n") # 在新窗口显示数据 show_data_window(gushici) def show_data_window(data): window = Toplevel(root) window.title("古诗词信息") text_widget = tk.Text(window) text_widget.pack(expand=True, fill='both') for item in data[:20]: # 仅显示前10条数据作为示例 text_widget.insert(tk.END, f"标题: {item['title']}\n作者: {item['author']}\n朝代: {item['dynasty']}\n内容: {item['poetic']}\n\n") window.mainloop() root = tk.Tk() root.title("古诗词爬虫") fetch_button = tk.Button(root, text="开始爬取", command=fetch_data) fetch_button.pack(pady=20) root.mainloop()