日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python Tkinter 项目实例:小说在线阅读器(爬虫部分已过期)

發(fā)布時間:2023/12/10 python 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python Tkinter 项目实例:小说在线阅读器(爬虫部分已过期) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1,項目概況
項目名稱:
小說在線閱讀器
項目需求:
1,根據(jù)關(guān)鍵字檢索,實現(xiàn)從互聯(lián)網(wǎng)獲取所需鏈接。
2,對獲取的鏈接進行解析,獲取二級鏈接,獲取的鏈接以文件的形式保存。
3,實現(xiàn)小說在線閱讀。
所需技術(shù):
Python基本爬蟲,Python tkinter GUI設(shè)計
2,項目代碼:

from fake_useragent import UserAgent from bs4 import BeautifulSoup as Bp import tkinter as tk import tkinter.messagebox import requests as req import re import os #彈出窗口提示,說明使用須知。 tkl = tk.Tk() tkl.title('驗證窗口') tkl.geometry('250x100') tkinter.messagebox.showinfo(title='使用須知',message='''1,本軟件需要連接網(wǎng)絡(luò)才能夠正常使用,使用本軟件時請先連接網(wǎng)絡(luò)!\n2,本軟件僅供學習交流使用,請勿私自傳播!\n3,鑒于本人水平有限,本軟件若有不足之處,望見諒。\n4,在軟件獲取鏈接或者解析時請勿操作軟件,否則可能會導致軟件無響應(yīng)!''') tlable = tk.Label(tkl,text='閱讀須知后請關(guān)閉此窗口!!!',font=('Arial',12)) tlable.pack() tkl.mainloop() #創(chuàng)建主窗口 app = tk.Tk() app.title('小說搜索解析閱讀器v1.0') app.geometry('800x600')lable = tk.Label(app,text='請輸入關(guān)鍵字',font=('Arial',12)) lable.pack() #定義搜索框 search_entry = tk.Entry(app,show=None,width=50) search_entry.pack()#定義功能函數(shù) def getdata():st.delete(1.0,tk.END)url = 'http://www.biquge.info/modules/article/search.php'#偽裝頭部ua = UserAgent()header = {'User-Agent':ua.random}key = search_entry.get()#爬取鏈接try:r = req.post(url,{'searchkey':key},headers=header)except Exception as e:tkinter.messagebox.showinfo(title='警告!',message='獲取鏈接失敗,請點擊按鈕重試!')returnr.raise_for_status()r.encoding = r.apparent_encodingre_list = []soup = Bp(r.text,'html.parser')data = soup.find_all('a')for item in data:try:if re.findall(key,item.text):re_list.append(item.text + ':' + 'http://www.biquge.info' + item['href'])except:continueif not re_list:st.insert('insert','沒有發(fā)現(xiàn)!')dvar = '-*---------------------*-\n請在下面復制要解析的鏈接,注意:一次只能解析一條\n' + '\n'.join(re_list)st.insert('insert',dvar)return#定義按鈕實現(xiàn)功能 search_button = tk.Button(app,text='獲取鏈接',width=12,height=2,command=getdata) search_button.pack()lable1 = tk.Label(app,text='鏈接顯示區(qū)域',font=('Arial',12)) lable1.pack()st = tk.Text(app,width=80,height=5) st.pack()lable2 = tk.Label(app,text='請輸入鏈接',font=('Arial',12)) lable2.pack()read_entry = tk.Entry(app,show=None,width=80) read_entry.pack() #定以函數(shù),用以實現(xiàn)相關(guān)按鈕功能 def readlink():url = read_entry.get()try:rd = req.get(url)rd.raise_for_status()rd.encoding = rd.apparent_encodingsoup = Bp(rd.text,'html.parser')readdata = soup.find_all('a')read_re_data = []for item in readdata:try:if 'html' in item['href'] and 'http' not in item['href']:read_re_data.append(url + item['href'])else:continueexcept:continuewith open('read.txt','w') as wfile:wfile.write('\n'.join(read_re_data))wfile.close()except:tkinter.messagebox.showinfo(title='警告', message='發(fā)生錯誤,請重試!')returnread_button = tk.Button(app,text='解析',width=12,height=2,command=readlink) read_button.pack() #readapp用于設(shè)置閱讀窗口 def readapp():readapp = tk.Tk()readapp.title('閱讀界面')readapp.geometry('1000x800')lable = tk.Label(readapp,text='閱讀界面',font=('Arial',12))lable.pack()if not os.path.exists('read.txt'):tkinter.messagebox.showinfo(title='錯誤',message='未找到文件!')readapp.destroy()returnwith open('page.tmp','w') as file:file.write('1')file.close()def downd():if not os.path.exists('page.tmp'):tkinter.messagebox.showinfo(title='錯誤', message='請重試!')rf = open('page.tmp','r')page = int(eval(rf.read()))page += 1rf.close()page_str = str(page)rfs = open('page.tmp','w')rfs.write(page_str)rfs.close()readt.delete(1.0,tk.END)rfile = open('read.txt', 'r')url = rfile.readlines()rfile.close()readr = req.get(url[page][:-1:])readr.raise_for_status()readr.encoding = readr.apparent_encodingsoup = Bp(readr.text, 'html.parser')data = soup.find_all('div', id='content')for item in data:readt.insert('insert', item.text)returndef upd():if not os.path.exists('page.tmp'):tkinter.messagebox.showinfo(title='錯誤', message='請重試!')rf = open('page.tmp', 'r')page = int(eval(rf.read()))rf.close()if page <= 1:tkinter.messagebox.showinfo(title='錯誤', message='沒有上一章了!')returnpage -= 1page_str = str(page)rfs = open('page.tmp', 'w')rfs.write(page_str)rfs.close()readt.delete(1.0, tk.END)rfile = open('read.txt', 'r')url = rfile.readlines()rfile.close()readr = req.get(url[page][:-1:])readr.raise_for_status()readr.encoding = readr.apparent_encodingsoup = Bp(readr.text, 'html.parser')data = soup.find_all('div', id='content')for item in data:readt.insert('insert', item.text)returnbutton1 = tk.Button(readapp,text='上一章',width=10,height=2,command=upd)button1.pack()button2 = tk.Button(readapp,text='下一章',width=10,height=2,command=downd)button2.pack()readt = tk.Text(readapp, width=120, height=50)rfile = open('read.txt','r')url = rfile.readlines()rfile.close()readr = req.get(url[1][:-1:])readr.raise_for_status()readr.encoding = readr.apparent_encodingsoup = Bp(readr.text,'html.parser')data = soup.find_all('div',id='content')for item in data:readt.insert('insert',item.text)readt.pack()readapp.mainloop()read_button1 = tk.Button(app,text='閱讀',width=12,height=2,command=readapp)read_button1.pack()app.mainloop()

3,項目效果:

總結(jié)

以上是生活随笔為你收集整理的Python Tkinter 项目实例:小说在线阅读器(爬虫部分已过期)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。