python 制作网站小说下载器


Posted in Python onFebruary 20, 2021

基本开发环境

· Python 3.6

· Pycharm

相关模块使用

python 制作网站小说下载器

目标网页分析

python 制作网站小说下载器

输入想看的小说内容,点击搜索

python 制作网站小说下载器

这里会返回很多结果,我只选择第一个

网页数据是静态数据,但是要搜索,是post请求,需要提价data参数,如下图所示:

python 制作网站小说下载器

然后通过解析网站数据,获取第一个小说i的详情页url即可

静态网页的获取,难度是不大的。

def search():
    search_url = 'http://www.xbiquge.la/modules/article/waps.php'
    data = {
        'searchkey': name
    }
    response = requests.post(url=search_url, data=data, headers=headers)
    selector = get_parsing(response.text)
    novel_url = selector.css('.even a::attr(href)').extract_first()

1、获取每本小说的章节名以及url地址

所有的章节名以及url地址,都包含在dd标签里面

python 制作网站小说下载器

2、获取url后,需要拼接

'/23/23019/11409705.html' # 这是网页获取到的url
'http://www.xbiquge.la/23/23019/11409705.html' # 这是真实的小说章节内容url地址

3、小说名字,直接获取即可。

def download_one_book(index_url):
    response = get_response(index_url)
    response.encoding = response.apparent_encoding
    sel = get_parsing(response.text)
    book_name = sel.css('#info h1::text').get()
    # 提取了所有章节的下载地址
    urls = sel.css('#list dd a::attr(href)').getall()
    # 不要最新的 12 章放在最前main
    for url in urls:
        chapter_url = 'http://www.xbiquge.la' + url
        print(chapter_url)

保存下载每章小说内容

def download_one_chapter(chapter_url, book_name):
    response = get_response(chapter_url)
    response.encoding = response.apparent_encoding
    html = response.text
    selector = get_parsing(html)
    h1 = selector.css('.bookname h1::text').get()
    content = selector.css('#content::text').getall()
    lines = []
 
    for c in content:
        lines.append(c.strip())
    print(h1)
    text = '\n'.join(lines)
    file = open(book_name + '.txt', mode='a', encoding='utf-8')
    file.write(h1)
    file.write('\n')
    file.write(text)
    file.write('\n')
    file.close()

小说软件界面

root = Tk()
root.title('小说下载器')
root.geometry('560x450+400+200')
 
label = Label(root, text='请输入下载小说名字:', font=('华文行楷', 20))
label.grid()
 
entry = Entry(root, font=('隶书', 20))
entry.grid(row=0, column=1)
 
text = Listbox(root, font=('隶书', 16), width=50, heigh=15)
text.grid(row=2, columnspan=2)
 
button1 = Button(root, text='开始下载', font=('隶书', 15), command=search)
button1.grid(row=3, column=0)
 
button2 = Button(root, text='退出程序', font=('隶书', 15), command=root.quit)
button2.grid(row=3, column=1)
 
root.mainloop()

显示下载内容

def novel_load(title):
    text.insert(END, '正在保存:{}'.format(title))
    # 文本框滚动
    text.see(END)
    # 更新
    text.update()

实现效果

python 制作网站小说下载器

以上就是python 制作网站小说下载器的详细内容,更多关于python 小说下载器的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python使用urllib2模块抓取HTML页面资源的实例分享
May 03 Python
Python中property函数用法实例分析
Jun 04 Python
python通过Windows下远程控制Linux系统
Jun 20 Python
Python中如何使用if语句处理列表实例代码
Feb 24 Python
python使用参数对嵌套字典进行取值的方法
Apr 26 Python
对Python 检查文件名是否规范的实例详解
Jun 10 Python
Python二维数组实现求出3*3矩阵对角线元素的和示例
Nov 29 Python
python函数定义和调用过程详解
Feb 09 Python
Python实时监控网站浏览记录实现过程详解
Jul 14 Python
python利用 keyboard 库记录键盘事件
Oct 16 Python
如何用python 操作zookeeper
Dec 28 Python
pycharm 快速解决python代码冲突的问题
Jan 15 Python
如何用python爬取微博热搜数据并保存
Feb 20 #Python
python 统计list中各个元素出现的次数的几种方法
Feb 20 #Python
pandas统计重复值次数的方法实现
Feb 20 #Python
pandas 按日期范围筛选数据的实现
Feb 20 #Python
基于Python-Pycharm实现的猴子摘桃小游戏(源代码)
Feb 20 #Python
pandas按条件筛选数据的实现
Feb 20 #Python
python实现b站直播自动发送弹幕功能
Feb 20 #Python
You might like
《PHP边学边教》(01.开篇――准备工作)
2006/12/13 PHP
php 文件缓存函数
2011/10/08 PHP
PHP 类相关函数的使用详解
2013/05/10 PHP
PHP实现邮件群发的源码
2013/06/18 PHP
shell脚本作为保证PHP脚本不挂掉的守护进程实例分享
2013/07/15 PHP
php基于SQLite实现的分页功能示例
2017/06/21 PHP
laravel实现上传图片,并且制作缩略图,按照日期存放的代码
2019/10/16 PHP
jQuery手指滑动轮播效果
2016/12/22 Javascript
jsonp跨域请求实现示例
2017/03/13 Javascript
Angular.js中window.onload(),$(document).ready()的写法浅析
2017/09/28 Javascript
JavaScript事件对象深入详解
2018/12/30 Javascript
记录一次完整的react hooks实践
2019/03/11 Javascript
JS实现横向轮播图(中级版)
2020/01/18 Javascript
JS+Canvas实现五子棋游戏
2020/08/26 Javascript
javascript this指向相关问题及改变方法
2020/11/19 Javascript
JavaScript中layim之整合右键菜单的示例代码
2021/02/06 Javascript
[45:56]Ti4正赛第一天 VG vs NEWBEE 3
2014/07/19 DOTA
[49:05]OG vs Newbee 2019DOTA2国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21.mp4
2020/07/19 DOTA
python分割和拼接字符串
2013/11/01 Python
python进阶教程之动态类型详解
2014/08/30 Python
Python中实现结构相似的函数调用方法
2015/03/10 Python
Python实现自动登录百度空间的方法
2017/06/10 Python
用Eclipse写python程序
2018/02/10 Python
python实现websocket的客户端压力测试
2019/06/25 Python
Django接收自定义http header过程详解
2019/08/23 Python
如何通过Python3和ssl实现加密通信功能
2020/05/09 Python
Python操作Excel把数据分给sheet
2020/05/20 Python
python集合能干吗
2020/07/19 Python
基于HTML5 Canvas 实现弹出框效果
2017/06/05 HTML / CSS
Book Depository澳大利亚:世界领先的专业在线书店之一
2018/12/27 全球购物
法学研究生自我鉴定范文
2013/12/04 职场文书
学习演讲稿范文
2014/05/10 职场文书
公司财务会计主管应聘求职信
2014/09/26 职场文书
大学生个人简历自荐信
2015/03/06 职场文书
董存瑞观后感
2015/06/11 职场文书
新手初学Java List 接口
2021/07/07 Java/Android