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脚本设置系统时间的两种方法
Feb 21 Python
Python利用QQ邮箱发送邮件的实现方法(分享)
Jun 09 Python
Python实现的快速排序算法详解
Aug 01 Python
python 重定向获取真实url的方法
May 11 Python
python smtplib模块实现发送邮件带附件sendmail
May 22 Python
Pandas 数据处理,数据清洗详解
Jul 10 Python
在python中使用with打开多个文件的方法
Jan 07 Python
Python 判断图像是否读取成功的方法
Jan 26 Python
Python 绘制酷炫的三维图步骤详解
Jul 12 Python
利用pyecharts实现地图可视化的例子
Aug 12 Python
python常用数据重复项处理方法
Nov 22 Python
windows环境中利用celery实现简单任务队列过程解析
Nov 29 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编程之高级技巧——利用Mysql函数
2006/10/09 PHP
PHP strtotime函数用法、实现原理和源码分析
2015/02/04 PHP
php调用KyotoTycoon简单实例
2015/04/02 PHP
laravel 解决Eloquent ORM的save方法无法插入数据的问题
2019/10/21 PHP
Jsonp 跨域的原理以及Jquery的解决方案
2010/05/18 Javascript
Google Maps API地图应用示例分享
2014/10/23 Javascript
jquery实现的美女拼图游戏实例
2015/05/04 Javascript
JavaScript开发Chrome浏览器扩展程序UI的教程
2016/05/16 Javascript
微信小程序 下拉菜单简单实例
2017/04/13 Javascript
详解vue2.0的Element UI的表格table列时间戳格式化
2017/06/13 Javascript
详解设置Webstorm 利用babel将ES6自动转码成ES5
2017/12/20 Javascript
React Native 自定义下拉刷新上拉加载的列表的示例
2018/03/01 Javascript
vue升级之路之vue-router的使用教程
2018/08/14 Javascript
JS删除对象中某一属性案例详解
2020/09/08 Javascript
[33:17]OG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python访问MySQL封装的常用类实例
2014/11/11 Python
Windows下搭建python开发环境详细步骤
2020/07/20 Python
Python列表(List)知识点总结
2019/02/18 Python
75条笑死人的知乎神回复,用60行代码就爬完了
2019/05/06 Python
python实现函数极小值
2019/07/10 Python
使用coverage统计python web项目代码覆盖率的方法详解
2019/08/05 Python
利用python在大量数据文件下删除某一行的例子
2019/08/21 Python
python [:3] 实现提取数组中的数
2019/11/27 Python
CPB肌肤之钥美国官网:Clé de Peau Beauté
2017/09/05 全球购物
选购国际女性时装设计师品牌:IFCHIC(支持中文)
2018/04/12 全球购物
lookfantastic荷兰:在线购买奢华护肤、护发和化妆品
2018/11/27 全球购物
Android interview questions
2016/12/25 面试题
应届生会计求职信
2013/11/11 职场文书
英语系本科生求职信范文
2013/12/18 职场文书
建筑工程技术专业求职信
2014/07/16 职场文书
在职员工证明书
2014/09/19 职场文书
个人融资协议书
2014/10/02 职场文书
2015年党员创先争优公开承诺书
2015/04/27 职场文书
使用Vue3+Vant组件实现App搜索历史记录功能(示例代码)
2021/06/09 Vue.js
Go语言设计模式之结构型模式
2021/06/22 Golang
Typescript类型系统FLOW静态检查基本规范
2022/05/25 Javascript