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 XML RPC服务器端和客户端实例
Nov 22 Python
python检测远程服务器tcp端口的方法
Mar 14 Python
浅谈numpy数组中冒号和负号的含义
Apr 18 Python
Python3列表内置方法大全及示例代码小结
May 10 Python
Python学习笔记之自定义函数用法详解
Jun 08 Python
Pandas分组与排序的实现
Jul 23 Python
python基础教程之while循环
Aug 14 Python
python将字典列表导出为Excel文件的方法
Sep 02 Python
TensorFlow获取加载模型中的全部张量名称代码
Feb 11 Python
Django使用list对单个或者多个字段求values值实例
Mar 31 Python
详解python方法之绑定方法与非绑定方法
Aug 17 Python
numpy实现RNN原理实现
Mar 02 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中的串行化变量和序列化对象
2006/09/05 PHP
常用的php对象类型判断
2008/08/27 PHP
PHP实现通过中文字符比率来判断垃圾评论的方法
2014/10/20 PHP
php计算整个目录大小的方法
2015/06/19 PHP
PHP7常量数组用法分析
2016/09/26 PHP
PHP数组生成XML格式数据的封装类实例
2016/11/10 PHP
在IE6下发生Internet Explorer cannot open the Internet site错误
2010/06/21 Javascript
真正的JQuery.ajax传递中文参数的解决方法
2011/05/28 Javascript
Javascript中arguments用法实例分析
2015/06/13 Javascript
js window对象属性和方法相关资料整理
2015/11/11 Javascript
原生js实现弹出层效果
2017/01/20 Javascript
详解webpack 多页面/入口支持&公共组件单独打包
2017/06/29 Javascript
vue-router2.0 组件之间传参及获取动态参数的方法
2017/11/10 Javascript
Bootstrap 3多级下拉菜单实例
2017/11/23 Javascript
vue.js或js实现中文A-Z排序的方法
2018/03/08 Javascript
JavaScript指定断点操作实例教程
2018/09/18 Javascript
微信小程序tabBar 返回tabBar不刷新页面
2019/07/25 Javascript
JS控制只能输入数字并且最多允许小数点两位
2019/11/24 Javascript
Vue项目vscode 安装eslint插件的方法(代码自动修复)
2020/04/15 Javascript
Python创建xml的方法
2015/03/10 Python
Python+OpenCV人脸检测原理及示例详解
2020/10/19 Python
python如何将多个PDF进行合并
2019/08/13 Python
python lambda表达式(匿名函数)写法解析
2019/09/16 Python
使用Matplotlib 绘制精美的数学图形例子
2019/12/13 Python
python爬虫爬取网页数据并解析数据
2020/09/18 Python
python实现暗通道去雾算法的示例
2020/09/27 Python
详解HTML5中的元素与元素
2015/08/17 HTML / CSS
初中语文教学反思
2014/02/02 职场文书
安全生产责任书
2014/03/12 职场文书
乡镇挂职心得体会
2014/09/04 职场文书
公安局副政委班子个人对照检查材料
2014/10/04 职场文书
党员个人整改方案及措施
2014/10/25 职场文书
2014年测量员工作总结
2014/12/12 职场文书
草房子读书笔记
2015/06/29 职场文书
2016年大学生就业指导课心得体会
2015/10/09 职场文书
pytorch 实现在测试的时候启用dropout
2021/05/27 Python