python3.9版本下编程一个例子用tkinter设计系统界面,将所输入的网站进行数据爬取(例如标题与链接),并将所爬取到的内容存入数据库中,从数据库中读取数据进行处理,用matplotlib实现数据绘图
时间: 2024-02-13 21:00:58 浏览: 216
Python实现在tkinter中使用matplotlib绘制图形的方法示例
好的,以下是一个简单的例子,用 tkinter 设计系统界面,爬取输入的网站数据并存入数据库,最后用 matplotlib 绘制数据图表。
```python
import tkinter as tk
import requests
from bs4 import BeautifulSoup
import sqlite3
import matplotlib.pyplot as plt
# 创建数据库连接
conn = sqlite3.connect('data.db')
c = conn.cursor()
# 创建数据表
c.execute('''CREATE TABLE IF NOT EXISTS website_data
(id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT,
link TEXT)''')
# tkinter 界面设计
root = tk.Tk()
root.title("网站数据爬取")
# 标签和输入框
tk.Label(root, text="请输入网站链接:").grid(row=0, column=0)
url_entry = tk.Entry(root, width=50)
url_entry.grid(row=0, column=1)
# 爬取数据并保存到数据库
def crawl_data():
url = url_entry.get()
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')
for link in soup.find_all('a'):
title = link.string
href = link.get('href')
if title and href:
c.execute("INSERT INTO website_data (title, link) VALUES (?, ?)", (title, href))
conn.commit()
tk.Label(root, text="数据爬取完成!").grid(row=2, column=1)
# 绘制数据图表
def draw_chart():
data = c.execute("SELECT COUNT(*), title FROM website_data GROUP BY title").fetchall()
data = sorted(data, key=lambda x: x[0], reverse=True)
labels = [d[1] for d in data]
values = [d[0] for d in data]
plt.pie(values, labels=labels)
plt.show()
# 按钮
tk.Button(root, text="爬取数据", command=crawl_data).grid(row=1, column=0)
tk.Button(root, text="绘制图表", command=draw_chart).grid(row=1, column=1)
root.mainloop()
# 关闭数据库连接
conn.close()
```
运行代码后,界面会显示一个输入框和两个按钮,输入要爬取的网站链接,点击“爬取数据”按钮,程序会爬取该网站的所有链接和标题,并将数据保存到 SQLite 数据库中。点击“绘制图表”按钮,程序会从数据库中读取数据,统计每个标题的链接数量,并用饼图将数据可视化。
阅读全文