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

歡迎訪問 生活随笔!

生活随笔

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

python

Python实战之小说下载神器(完结)今天教你如何白拿一款代码版资源丰富的小说下载器GUI界面编程,海量资源免费看~(追书必备神器)

發布時間:2024/3/26 python 50 豆豆

前言

這次的是一個系列內容 給大家講解一下何一步一步實現一個完整的實戰項目案例系列之 小說下載神器(完結)(GUI界面化程序) 小說的搜索功能、小說下載器的GUI界面

愛看小伙伴想要一款資源豐富,好用的看小說的軟件。

所以為大家做了一款Python版的小程序,這個系列內容已經到尾聲了,上一期爬了小說排行榜

的所有小說內容采集,這一期的話終于到最后的階段啦~

這一期的代碼有點兒多,本來是分為兩個內容文章的,想了下閱讀量不行還是一次性寫了吧,

下一期可以開點兒其他新鮮內容蠻~

本期主要內容:Python代碼實現小說的搜索功能、小說下載器的GUI界面。

所有文章完整的素材+源碼都在👇👇

粉絲白嫖源碼福利,請移步至CSDN社區或文末公眾hao即可免費。

正文

一、實現小說的搜索功能

1)導入模塊

# 導入數據請求模塊 --> 第三方模塊, 需要安裝 import requests # 導入正則表達式模塊 --> 內置模塊, 不需要安裝 import re # 導入數據解析模塊 --> 第三方模塊, 需要安裝 import parsel # 導入文件操作模塊 --> 內置模塊, 不需要安裝 import os # 導入漂亮的表格 import prettytable as pt

2)主程序

ef get_response(html_url):"""發送請求函數:param html_url: 請求鏈接:return: response響應對象"""# 模擬瀏覽器 headers 請求頭headers = {# user-agent 用戶代理 表示瀏覽器基本身份信息'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'}response = requests.get(url=html_url, headers=headers)return responsedef get_list_url(html_url):"""獲取章節url/小說名:param html_url: 小說目錄頁:return:"""# 調用發送請求函數html_data = get_response(html_url).text# 提取小說名字name = re.findall('<h1>(.*?)</h1>', html_data)[0]# 提取章節urlurl_list = re.findall('<dd> <a style="" href="(.*?)">', html_data)return name, url_listdef get_content(html_url):"""獲取小說內容/小說標題:param html_url: 小說章節url:return:"""# 調用發送請求函數html_data = get_response(html_url).text# 提取標題title = re.findall('<h1>(.*?)</h1>', html_data)[0]# 提取內容content = re.findall('<div id="content">(.*?)<p>', html_data, re.S)[0].replace('<br/><br/>', '\n')return title, contentdef save(name, title, content):"""保存數據函數:param name: 小說名:param title: 章節名:param content: 內容:return:"""# 自動創建一個文件夾file = f'{name}\\'if not os.path.exists(file):os.mkdir(file)with open(file + name + '.txt', mode='a', encoding='utf-8') as f:"""第一章 標題小說內容第二章 標題小說內容"""# 寫入內容f.write(title)f.write('\n')f.write(content)f.write('\n')print(title, '已經保存')def get_novel_id(html_url):"""獲取小說ID:param html_url: 某分類的鏈接:return:"""# 調用發送請求函數novel_data = get_response(html_url=html_url).textselector = parsel.Selector(novel_data)href = selector.css('.l .s2 a::attr(href)').getall()href = [i.replace('/', '') for i in href]return hrefdef search(word):"""搜索功能:param word: 書名/作者:return:"""search_url = f'https://www.biqudu.net/searchbook.php?keyword={word}'# 發送請求search_data = get_response(html_url=search_url).text# 解析數據, 提取小說名字/作者/小說IDselector = parsel.Selector(search_data)lis = selector.css('.novelslist2 li')novel_info = []tb = pt.PrettyTable()tb.field_names = ['序號', '書名', '作者', '書ID']num = 0for li in lis[1:]:# 小說名字name = li.css('.s2 a::text').get()novel_id = li.css('.s2 a::attr(href)').get().replace('/', '')writer = li.css('.s4::text').get()dit = {'name': name,'writer': writer,'novel_id': novel_id,}tb.add_row([num, name, writer, novel_id])num += 1novel_info.append(dit)print('你搜索的結果如下:')print(tb)novel_num = input('請輸入你想要下載的小說序號: ')novel_id = novel_info[int(novel_num)]['novel_id']return novel_iddef main(word):"""主函數"""novel_id = search(word)novel_url = f'https://www.biqudu.net/{novel_id}/'name, url_list = get_list_url(html_url=novel_url)print(name, url_list)for url in url_list:index_url = 'https://www.biqudu.net' + urltitle, content = get_content(html_url=index_url)save(name, title, content)if __name__ == '__main__':word = input('請輸入你搜索小說名: ')main(word)

3)效果展示

輸入小說名——

?

小說下載中——

?

?

?二、小說下載器的GUI界面

1)主程序

import tkinter as tk from tkinter import ttkdef show():name = name_va.get()print('輸入的名字是:', name)def download():name = num_va.get()print('輸入的序號:', name)# 創建界面 root = tk.Tk() # 設置標題 root.title('小說下載器') # 設置界面大小 root.geometry('500x500+200+200') # 設置可變變量 name_va = tk.StringVar() # 設置標簽 search_frame = tk.Frame(root) search_frame.pack(pady=10) # 設置文本 tk.Label(search_frame, text='書名 作者', font=('微軟雅黑', 15)).pack(side=tk.LEFT, padx=10) # 設置輸入框 tk.Entry(search_frame, relief='flat', textvariable=name_va).pack(side=tk.LEFT)# 序號獲取 num_va = tk.StringVar() # 查詢下載輸入框 download_frame = tk.Frame(root) download_frame.pack(pady=10) # 設置文本 tk.Label(download_frame, text='小說 序號', font=('微軟雅黑', 15)).pack(side=tk.LEFT, padx=10) # 設置輸入框 tk.Entry(download_frame, relief='flat', textvariable=num_va).pack(side=tk.LEFT)# 按鈕設置 button_frame = tk.Frame(root) button_frame.pack(pady=10)# 設置查詢按鈕 tk.Button(button_frame, text='查詢', font=('微軟雅黑', 10), relief='flat', bg='#88e2d6', width=10, command=show).pack(side=tk.LEFT, padx=10) # 設置下載按鈕 tk.Button(button_frame, text='下載', font=('微軟雅黑', 10), relief='flat', bg='#88e2d6', width=10, command=download).pack(side=tk.LEFT, padx=10)# 提前設置標簽名字和中文顯示內容 columns = ('num', 'writer', 'name', 'novel_id') columns_value = ('序號', '作者', '書名', '書ID') tree_view = ttk.Treeview(root, height=18, show='headings', columns=columns) # 設置列名 # 設置列名 tree_view.column('num', width=40, anchor='center') tree_view.column('writer', width=40, anchor='center') tree_view.column('name', width=40, anchor='center') tree_view.column('novel_id', width=40, anchor='center') # 給列名設置顯示的名字 tree_view.heading('num', text='序號') tree_view.heading('writer', text='作者') tree_view.heading('name', text='書名') tree_view.heading('novel_id', text='書ID') tree_view.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)

2)效果展示

?

?

總結

今天小編終于把小說下載器的內容更完了鴨~全網小說免費看,軟件界面簡潔、功能全面,可以

讓大家輕輕松松的遨游書海哦~下一期大家想看我寫什么內容啦可評論區哦!

?完整的素材源碼等:可以滴滴我吖!或者點擊文末hao自取免費拿的哈~

?🔨推薦往期文章——

項目1.0 小說下載神器(GUI界面)系列內容

Python實戰之小說下載神器(一)看小說怎么能少了這款寶藏神器呢?全網小說書籍隨便下,隨便看,爆贊(你準備好了嗎?)

項目1.1? 小說下載神器(GUI界面)系列內容?

Python實戰之小說下載神器(二)整本小說下載:看小說不用這個程序,我實在替你感到可惜*(小說愛好者必備)

項目1.2??小說下載神器(GUI界面)系列內容?

Python實戰之小說下載神器(三)排行榜所有小說:最全熱門小說合集,總有一款適合你,好多好多好多超贊的小說...(源碼分享學習)

🎁文章匯總——

Python文章合集 | (入門到實戰、游戲、Turtle、案例等)

(文章匯總還有更多你案例等你來學習啦~源碼找我即可免費!) ??

總結

以上是生活随笔為你收集整理的Python实战之小说下载神器(完结)今天教你如何白拿一款代码版资源丰富的小说下载器GUI界面编程,海量资源免费看~(追书必备神器)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。