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实现简单截取中文字符串的方法
Jun 15 Python
使用python socket分发大文件的实现方法
Jul 08 Python
Python实现的微信红包提醒功能示例
Aug 22 Python
python 一篇文章搞懂装饰器所有用法(建议收藏)
Aug 23 Python
python 实现二维列表转置
Dec 02 Python
Python 解析pymysql模块操作数据库的方法
Feb 18 Python
jupyter实现重新加载模块
Apr 16 Python
Python使用re模块验证危险字符
May 21 Python
解决Keras中CNN输入维度报错问题
Jun 29 Python
python对输出的奇数偶数排序实例代码
Dec 04 Python
Python基础数据类型tuple元组的概念与用法
Aug 02 Python
python实现Nao机器人的单目测距
Sep 04 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和JAVA中的重载(overload)和覆盖(override) 介绍
2012/03/01 PHP
php获取远程图片体积大小的实例
2013/11/12 PHP
PHP中soap的用法实例
2014/10/24 PHP
JQuery 简便实现页面元素数据验证功能
2007/03/24 Javascript
Jquery实战_读书笔记1—选择jQuery
2010/01/22 Javascript
jquery ajax 同步异步的执行示例代码
2010/06/23 Javascript
jquery 通过name快速取值示例
2014/01/24 Javascript
textarea不能通过maxlength属性来限制字数的解决方法
2014/09/01 Javascript
浅谈javascript语法和定时函数
2015/05/03 Javascript
jQuery+Ajax+PHP+Mysql实现分页显示数据实例讲解
2015/09/27 Javascript
跨域资源共享 CORS 详解
2016/04/26 Javascript
浅析jquery如何判断滚动条滚到页面底部并执行事件
2016/04/29 Javascript
jQuery实现简单倒计时功能的方法
2016/07/04 Javascript
详解vue2路由vue-router配置(懒加载)
2017/04/08 Javascript
微信小程序Redux绑定实例详解
2017/06/07 Javascript
Mint UI组件库CheckList使用及踩坑总结
2018/12/20 Javascript
浅析Vue 中的 render 函数
2020/02/28 Javascript
详解JavaScript之Array.reduce源码解读
2020/11/01 Javascript
[53:36]Liquid vs VP Supermajor决赛 BO 第三场 6.10
2018/07/05 DOTA
python模拟鼠标拖动操作的方法
2015/03/11 Python
python 安装virtualenv和virtualenvwrapper的方法
2017/01/13 Python
python 实现得到当前时间偏移day天后的日期方法
2018/12/31 Python
python2.7 安装pip的方法步骤(管用)
2019/05/05 Python
Anaconda+vscode+pytorch环境搭建过程详解
2020/05/25 Python
Python同时迭代多个序列的方法
2020/07/28 Python
房地产销售经理岗位职责
2014/01/01 职场文书
致短跑运动员广播稿
2014/01/09 职场文书
初中班主任评语
2014/04/24 职场文书
岗位标兵事迹材料
2014/05/17 职场文书
正科级干部考察材料
2014/05/29 职场文书
幼儿园园长安全责任书
2015/05/08 职场文书
党纪处分决定书
2015/06/24 职场文书
2016年会领导致辞稿
2015/07/29 职场文书
2019单位介绍信怎么写
2019/06/24 职场文书
申论不会写怎么办?教您掌握这6点思维和原则
2019/07/17 职场文书
php双向队列实例讲解
2021/11/17 PHP