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 相关文章推荐
Django发送html邮件的方法
May 26 Python
Python使用设计模式中的责任链模式与迭代器模式的示例
Mar 02 Python
Python使用smtplib模块发送电子邮件的流程详解
Jun 27 Python
Django在win10下的安装并创建工程
Nov 20 Python
python 日志增量抓取实现方法
Apr 28 Python
PyCharm-错误-找不到指定文件python.exe的解决方法
Jul 01 Python
Python 使用folium绘制leaflet地图的实现方法
Jul 05 Python
python实现超市商品销售管理系统
Nov 22 Python
python redis 批量设置过期key过程解析
Nov 26 Python
python dumps和loads区别详解
Feb 04 Python
Python要如何实现列表排序的几种方法
Feb 21 Python
jupyter notebook 重装教程
Apr 16 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
深入phpMyAdmin的安装与配置的详细步骤
2013/05/07 PHP
php中常量DIRECTORY_SEPARATOR用法深入分析
2014/11/14 PHP
php读取csc文件并输出
2015/05/21 PHP
PHP数组编码gbk与utf8互相转换的两种方法
2016/09/01 PHP
PHP正则表达式匹配替换与分割功能实例浅析
2017/02/04 PHP
jQuery.ajax 用户登录验证代码
2010/10/29 Javascript
jQuery动态添加的元素绑定事件处理函数代码
2011/08/02 Javascript
简单几行JS Code实现IE邮件转发新浪微博
2013/07/03 Javascript
js操作table示例(个人心得)
2013/11/29 Javascript
鼠标拖拽移动子窗体的JS实现
2014/02/25 Javascript
js中一维数组和二位数组中的几个问题示例说明
2014/07/17 Javascript
jQuery的bind()方法使用详解
2015/07/15 Javascript
javascript实现获取浏览器版本、浏览器类型
2015/12/02 Javascript
全面详细的jQuery常见开发技巧手册
2016/02/21 Javascript
js基于setTimeout与setInterval实现多线程
2016/06/17 Javascript
原生ajax处理json格式数据的实例代码
2016/12/25 Javascript
JS作用域链详解
2017/06/26 Javascript
纯js实现的积木(div层)拖动功能示例
2017/07/19 Javascript
关于jQuery里prev()的简单操作代码
2017/10/27 jQuery
解决VUEX兼容IE上的报错问题
2018/03/01 Javascript
js纯前端实现腾讯cos文件上传功能的示例代码
2019/05/14 Javascript
完美解决通过IP地址访问VUE项目的问题
2020/07/18 Javascript
详解Vue的组件中data选项为什么必须是函数
2020/08/17 Javascript
全面了解python字符串和字典
2016/07/07 Python
详解Python pygame安装过程笔记
2017/06/05 Python
Python通过matplotlib画双层饼图及环形图简单示例
2017/12/15 Python
Python中实现最小二乘法思路及实现代码
2018/01/04 Python
基于Python实现迪杰斯特拉和弗洛伊德算法
2020/05/27 Python
使用Python向DataFrame中指定位置添加一列或多列的方法
2019/01/29 Python
Python class的继承方法代码实例
2020/02/14 Python
荷兰在线体育用品商店:Avantisport.nl
2018/07/04 全球购物
大学生的应聘自我评价
2013/12/13 职场文书
社区党建工作方案
2014/06/10 职场文书
增员口号大全
2014/06/18 职场文书
亲属关系公证书样本
2015/01/23 职场文书
Python经常使用的一些内置函数
2022/04/11 Python