python期末大报告做了接近两天,结果却不是很好,写个报告总结一下
一.技术总结
我实现的是一个网络读书网站的书籍下载和书籍阅读系统
目标是上面的世界名著模块:365读书人网站上的世界名著模块
书籍的下载用的是多线程爬虫,书籍阅读界面是用GUI完成了一个记事本,登录界面连接数据库进行判断
下面是实现的代码:
import tkinter
import pymysql
import re
import threading
import requests
import tkinter.filedialog
import tkinter.messagebox
import os
import codecs
import chardet
import time
global user_et, psw_et, rd_win, text, filename, lg_win, book_url, book_title
roort_cate = [' ', '世界名著']
def wr():
wr_tk = tkinter.Tk()
wr_tk.title("Error")
wr_tk.geometry("250x125+750+400")
wr_lb = tkinter.Label(wr_tk, text="不存在该用户或者密码错误", font=("宋体", 10))
wr_lb.place(x=50, y=60, width=150, height=20)
wr_tk.mainloop()
def reg():
conn = pymysql.connect(host='127.0.0.1', user='root', password='123456', database='read', charset='utf8')
cursor = conn.cursor()
us_nm = user_et.get()
psw = psw_et.get()
sql = "insert into user(user_name, password) values('%s', '%s')" %(us_nm, psw)
print(sql)
cursor.execute(sql)
conn.commit()
cursor.close()
conn.close()
def log():
conn = pymysql.connect(host='127.0.0.1', user='root', password='123456', database='read', charset='utf8')
cursor = conn.cursor()
us_nm = user_et.get()
psw = psw_et.get()
sql = "select * from user where user_name = '%s' and password = '%s'" %(us_nm, psw)
print(sql)
cursor.execute(sql)
count = cursor.rowcount
print(count)
if count == 1:
interface()
else:
wr()
cursor.close()
conn.close()
def find_chinese(file):
pattern = re.compile(r'[^\u4e00-\u9fa5]')
chinese = re.sub(pattern, '', file)
return chinese
l=threading.Lock()
def wt(url, fpath):
l.acquire()
time.sleep(0.001)
headers = {"user-agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"}
response = requests.get(url, headers=headers)
response.encoding = 'gb2312'
html = response.text
#print(html)
content = re.findall(r'</DIV>(.*?)<!--/HTMLBUILERPART0-->', html, re.S)[0]
#content = re.findall(r'</DIV>(.*?)', content, re.S)[0]
#content = clean(content)
#content = find_chinese(content)
content = content.replace('<BR>', '')
content &