百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 软件资讯 > 正文

一个Python编写的小说下载器_一个python编写的小说下载器叫什么

ninehua 2025-02-19 13:20 37 浏览

先看看效果

昨天我们已经能够爬任意一本小说,今天我们用一个新的库--tkinter库做一个简单的图形界面,实现类似小说下载器那样的简单功能。

先说一下tkinter库:

Tkinter 是 Python 的标准 GUI 库。Python 使用 Tkinter 可以快速的创建 GUI 应用程序。

Tkinter 组件

Tkinter的提供各种控件,如按钮,标签和文本框,一个GUI应用程序中使用。这些控件通常被称为控件或者部件。

目前有15种Tkinter的部件。我们提出这些部件以及一个简短的介绍,在下面的表:

控件

描述

Button

按钮控件;在程序中显示按钮。

Canvas

画布控件;显示图形元素如线条或文本

Checkbutton

多选框控件;用于在程序中提供多项选择框

Entry

输入控件;用于显示简单的文本内容

Frame

框架控件;在屏幕上显示一个矩形区域,多用来作为容器

Label

标签控件;可以显示文本和位图

Listbox

列表框控件;在Listbox窗口小部件是用来显示一个字符串列表给用户

Menubutton

菜单按钮控件,用于显示菜单项。

Menu

菜单控件;显示菜单栏,下拉菜单和弹出菜单

Message

消息控件;用来显示多行文本,与label比较类似

Radiobutton

单选按钮控件;显示一个单选的按钮状态

Scale

范围控件;显示一个数值刻度,为输出限定范围的数字区间

Scrollbar

滚动条控件,当内容超过可视化区域时使用,如列表框。.

Text

文本控件;用于显示多行文本

Toplevel

容器控件;用来提供一个单独的对话框,和Frame比较类似

Spinbox

输入控件;与Entry类似,但是可以指定输入范围值

PanedWindow

PanedWindow是一个窗口布局管理的插件,可以包含一个或者多个子控件。

LabelFrame

labelframe 是一个简单的容器控件。常用与复杂的窗口布局。

tkMessageBox

用于显示你应用程序的消息框。


标准属性

标准属性也就是所有控件的共同属性,如大小,字体和颜色等等。

属性

描述

Dimension

控件大小;

Color

控件颜色;

Font

控件字体;

Anchor

锚点;

Relief

控件样式;

Bitmap

位图;

Cursor

光标;


几何管理

Tkinter控件有特定的几何状态管理方法,管理整个控件区域组织,以下是Tkinter公开的几何管理类:包、网格、位置

几何方法

描述

pack()

包装;

grid()

网格;

place()

位置;

说了一些tkinter库的基础东西,我们就开始制作一个界面,先制作小说下载器的主页面,代码如下:

root = Tk ()
root.title ('小说下载器')
root.geometry ('450x100+250+150')

label = Label (root, text='请输入下载小说名字:', font=('华文行楷'))
label.grid (row=1,column=0)

entry = Entry (root, font=('隶书'))
entry.grid (row=1, column=1)

button1 = Button (root, text='开始下载', font=('隶书', 15)
button1.grid (row=1, column=2)

button2 = Button (root, text='退出程序', font=('隶书', 15))
button2.grid (row=3, columnspan=2)

root.mainloop ()

这样上图那个界面就出来了,出来了还不行,你得实现在界面上能输入小说名称,以及实现下载功能,下载功能就是一个爬虫,上次我们已经实现,这里就不多说了,现在只要在实现输入功能即可。代码如下:

name=entry.get()

这个代码能实现在图形界面上输入并显示

最终实现如图所示:

完整代码如下:

from tkinter import *
import requests,os
from bs4 import BeautifulSoup
import tkinter.messagebox
from  tkinter import ttk
title2=[]
url4=[]

# --------下载开始--------
def genxin():
    top = Tk ()
    top.title ("%s小说下载结果" % entry.get ())
    top.geometry ("800x600+600+100")
    columns = ("下载章节","下载链接")
    treeview = ttk.Treeview (top, show="headings", columns=columns, height='100')

    treeview.column ("下载章节", width=250, anchor='center')
    treeview.column ("下载链接", width=250, anchor='center')

    treeview.heading ("下载章节", text="下载章节")
    treeview.heading ("下载链接", text="下载链接")

    treeview.pack ()

    for write_ in range (min(len (title2),len(url4))):  # 写入数据
        treeview.insert ('', write_, values=(title2[write_],url4[write_]))
    top.mainloop ()


# --------爬虫程序--------
def showinfo():
# 获取输入的内容
    #name=input("请输入小说名称:")
    name=entry.get()
    url='https://www.xbiquwx.la/modules/article/search.php?searchkey={}'.format(name)
    html=requests.get(url)
    soup=BeautifulSoup(html.content,'lxml')
    global booktitle
    booktitle = soup.find('td',class_='odd').text
    if not os.path.isdir(booktitle):  # 判断当前文件夹下是否存在和小说名同名的文件夹
        os.makedirs(booktitle)  # 若不存在,则创建小说同名文件夹
    dd=soup.find_all('tr')
    lj=soup.find('td',class_='odd').find('a')['href']
    url1='https://www.xbiquwx.la'+ lj
    response1 = requests.get(url1)
    soup1 = BeautifulSoup(response1.content, 'lxml')
    dd = soup1.find_all('dd')
    for i in range(len(dd)):
        if i < 10:
            ttt=dd[i].find ('a')
            for title3 in ttt:

                title2.append (title3)
            title1 = dd[i].find('a').text

            url2 = dd[i].find('a')['href']
            for url3 in dd[i].find_all('a'):

                url4.append(url1+url3['href'])
            response2 = requests.get(url1 + url2)
            soup2 = BeautifulSoup(response2.content, 'lxml')
            xsnr = soup2.find('div', id='content').text.replace('    ','\n')
            f = open(booktitle + '/' + title1 + '.txt', 'a+', encoding='utf-8')
            f.write(xsnr)
            print("正在下载《 {} 》...... {} / {} ".format(title1, i+1, len(dd)))
        else:
            print('本次共下载 {} 章, 保存地址:{}'.format(i, os.getcwd() + '\\' + booktitle + '\\'))

    genxin()
# --------下载器图形界面--------
root = Tk ()
root.title ('小说下载器')
root.geometry ('450x100+250+150')

label = Label (root, text='请输入下载小说名字:', font=('华文行楷'))
label.grid (row=1,column=0)

entry = Entry (root, font=('隶书'))
entry.grid (row=1, column=1)

button1 = Button (root, text='开始下载', font=('隶书', 15),command=showinfo)
button1.grid (row=1, column=2)

button2 = Button (root, text='退出程序', font=('隶书', 15))
button2.grid (row=3, columnspan=2)

root.mainloop ()

相关推荐

不要随便给别人的iPhone刷机,否则后果会很严重

一网友称自己也算一个果粉,并且也使用iPhone多年,最近虽然看到网上有很多人给iPhone刷机的时候导致错误代码,变成白苹果,但是还是肆无忌惮的帮老板娘给iPhone刷机了!心想一部好好的iPhon...

iphone6白苹果重启、刷机报错4005维修实记

【机器型号】:iPhone6【故障现象】:刷机报错4005【客户描述】:机器摔过后开机白苹果重启,刷机报错4005【维修过程】:客户发过来的是单板,硬盘已经焊过,码片位置也飞过线。如图:接上外壳刷机,...

iPhone、iPad刷机报错是什么原因?详见苹果刷机报错代码大全

无论是借助iTunes或其它工具给iPhone、iPad刷机,都可能遇到失败报错的情况,失败报错会有代码提示。如下图中的“发生未知错误(9)”,9是指什么意思?是属于什么原因?对于专业维修人员可能很清...

技术文:iPhone 刷机报错 53 详解及维修方法

指纹电路关联的各个模块:1:指纹模块(也就是HOME键排线):上面有指纹识别块(HOME键蓝宝石玻璃)、排线、指纹处理芯片。2:指纹连接排线:连接指纹模块到主板的接口3:指纹接口4:指纹验证码片:就是...

闲鱼22元入手WiFi6无线网卡,20厘米长天线+双频900M

我自用的小主机是攒出来的,机箱是2012年买的立人NC2007B,随后十多年只换主板不换机箱,目前是H110M主板+I7-6700处理器,一直都使用USB外置无线网卡。上周我在狗东7.9元买了WiFi...

IObit Driver Booster Pro 专业驱动软件

软件介绍DriverBooster是一款针对Windows操作系统的电脑的驱动程序更新工具。更新驱动可以有效地提升电脑硬件性能,减少系统崩溃降低硬件冲突。该驱动加速器软件可以通过智能的检测引擎有效识...

制作Win10系统安装盘和Win系统的安装

制作Win10系统安装盘和Win系统的安装重要提示:操作之前准备工作必须看一下1.准备8G或8G以上U盘(32G以内)。制作系统U盘会格式化U盘内所有文件,建议准备一个新U盘,或者U盘文件拷贝到其他文...

Win10专业版无线网络老是掉线的问题

有一位电脑基地的用户,使用win10专业版系统笔记本电脑的时候,总是出现无线网卡掉线的问题,这该怎么办呢?接下来,技术员小编就来分享具体的解决方法。Win10专业版下无线总是掉线,可能是由电源管理设...

ESXI安装OpenWRT+群晖NAS+Win,打造AIO,附硬盘+网卡直通教程

开篇碎碎念Hi,大家好,今天来打造一个全能小主机,通过ESXI虚拟机为底层,在此基础上安装OpenWRT软路由+群晖NAS+Windows/linux系统,软路由负责上网,NAS负责文件存储,Wind...

如何在Windows上安装.NET Framework 详细教程分享

.NETFramework是Microsoft推出的一套开发平台,主要用于Windows操作系统上的应用程序开发和运行。许多软件和游戏需要安装特定版本的.NETFramework才能正常运行。...

Win10不和无线网卡好好玩耍!部分Win7/Win8.1用户很忧伤

IT之家讯硬件兼容问题一直困扰着一些Win7/Win8.1用户,因为这很影响他们和Win10好好玩耍。尤其是一些关键硬件,比如显卡和网卡如果有问题,基本上就意味着堵死了升级的道路,除非有合适的驱动更...

直接安装Windows 10 v20H2原版纯净系统教程(附下载地址)

软件简介:软件【下载地址】获取方式见文末。注:推荐使用,更贴合此安装方法!想要无痛升级您的电脑系统至Windows10吗?我们提供了一个简便的解决方案,适合能正常开机的电脑,无需制作启动U盘。此方案...

电脑网卡坏了怎么修复(电脑网卡坏了怎么修复win7系统)

当电脑网卡出现故障时,无论是有线网络还是无线网络,都可能无法正常连接。下面从软件、硬件等方面,分步骤为你介绍排查与修复的解决方案。一、初步排查:锁定问题源头检查网络环境将手机、平板等其他设备连接至同一...

自已封装的Windows10(仅供学习)(自己封装系统)

前段时间封装一个纯净版的Window10LTSC,除了带Office2016、极点输入法和万能五笔外,无任何其它三方软件,也没有浏览器主页挟持,真正意义上的纯净版系统。(春节后会出系统封装专题)这...

如何安装设置无线网卡(非免驱版)?

使用无线网卡,可以将您的台式机连接到无线网络,就像笔记本、手机一样,无需使用网线连接。本文介绍无线网卡的安装及使用方法。安装网卡之前,请确认电脑光盘驱动可以正常使用,同时准备好网卡安装光盘。注意:若无...