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 Web框架Flask下网站开发入门实例
Feb 08 Python
python3 实现的人人影视网站自动签到
Jun 19 Python
Python编程使用NLTK进行自然语言处理详解
Nov 16 Python
Flask-Mail用法实例分析
Jul 21 Python
Python基础知识点 初识Python.md
May 14 Python
详解Python用三种方式统计词频的方法
Jul 29 Python
Python print不能立即打印的解决方式
Feb 19 Python
Python3标准库之functools管理函数的工具详解
Feb 27 Python
Python基于requests库爬取网站信息
Mar 02 Python
详解在Python中使用Torchmoji将文本转换为表情符号
Jul 27 Python
2020年10款优秀的Python第三方库,看看有你中意的吗?
Jan 12 Python
教你怎么用Python生成九宫格照片
May 20 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下使用无限生命期Session的方法
2007/03/16 PHP
过滤掉PHP数组中的重复值的实现代码
2011/07/17 PHP
安装ImageMagick出现error while loading shared libraries的解决方法
2014/09/23 PHP
php中file_get_contents与curl性能比较分析
2014/11/08 PHP
PHP向浏览器输出内容的4个函数总结
2014/11/17 PHP
PHP使用memcache缓存技术提高响应速度的方法
2014/12/26 PHP
PHP中使用正则表达式提取中文实现笔记
2015/01/20 PHP
跨浏览器的设置innerHTML方法
2006/09/18 Javascript
js Html结构转字符串形式显示代码
2011/11/15 Javascript
Javascript实现视频轮播在pc端与移动端均可
2013/09/29 Javascript
jquery实现个人中心导航菜单效果和美观都非常不错
2014/09/02 Javascript
js实现禁止中文输入的方法
2015/01/14 Javascript
JavaScript数据类型学习笔记
2016/01/25 Javascript
JavaScript实现的SHA-1加密算法完整实例
2016/02/02 Javascript
Bootstrap如何创建表单
2016/10/21 Javascript
真正好用的js验证上传文件大小的简单方法
2016/10/27 Javascript
jQuery动态追加页面数据以及事件委托详解
2017/05/06 jQuery
NodeJS实现图片上传代码(Express)
2017/06/30 NodeJs
如何理解Vue的v-model指令的使用方法
2018/07/19 Javascript
vue中子组件传递数据给父组件的讲解
2019/01/27 Javascript
js仿360开机效果
2019/12/26 Javascript
JavaScript中交换值的10种方法总结
2020/08/18 Javascript
python3抓取中文网页的方法
2015/07/28 Python
python itchat实现微信好友头像拼接图的示例代码
2017/08/14 Python
Python+OpenCV人脸检测原理及示例详解
2020/10/19 Python
python中import与from方法总结(推荐)
2019/03/21 Python
Django框架中间件(Middleware)用法实例分析
2019/05/24 Python
Django中使用极验Geetest滑动验证码过程解析
2019/07/31 Python
深入学习python多线程与GIL
2019/08/26 Python
详解Python中的路径问题
2020/09/02 Python
索引覆盖(Index Covering)查询含义
2012/02/18 面试题
酒店拾金不昧表扬信
2014/01/18 职场文书
人事文员岗位职责
2014/02/16 职场文书
2014国培学习感言
2014/03/05 职场文书
质量保证书格式
2015/02/27 职场文书
vue实现在data里引入相对路径
2022/06/05 Vue.js