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中的index()方法使用教程
May 18 Python
Python实现复杂对象转JSON的方法示例
Jun 22 Python
Python 反转字符串(reverse)的方法小结
Feb 20 Python
django用户注册、登录、注销和用户扩展的示例
Mar 19 Python
python递归全排列实现方法
Aug 18 Python
Python魔法方法详解
Feb 13 Python
Python时间差中seconds和total_seconds的区别详解
Dec 26 Python
Python爬虫库BeautifulSoup获取对象(标签)名,属性,内容,注释
Jan 25 Python
python上selenium的弹框操作实现
Jul 13 Python
python实现数字炸弹游戏
Jul 17 Python
Python matplotlib模块及柱状图用法解析
Aug 10 Python
基于Python实现股票收益率分析
Apr 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
IIS环境下快速安装、配置和调试PHP5.2.0
2006/12/17 PHP
php cc攻击代码与防范方法
2012/10/18 PHP
php截取字符串函数substr,iconv_substr,mb_substr示例以及优劣分析
2014/06/10 PHP
php定界符
2014/06/19 PHP
浅谈PHP中的错误处理和异常处理
2017/02/04 PHP
laravel项目利用twemproxy部署redis集群的完整步骤
2018/05/11 PHP
javascript 文章截取部分无损html显示实现代码
2010/05/04 Javascript
漂亮的jquery提示效果(仿腾讯弹出层)
2013/02/05 Javascript
js传参数受特殊字符影响错误的解决方法
2013/10/21 Javascript
js添加绑定事件的方法
2016/05/15 Javascript
3kb jQuery代码搞定各种树形选择的实现方法
2016/06/10 Javascript
如何正确理解javascript的模块化
2017/03/02 Javascript
ES6(ECMAScript 6)新特性之模板字符串用法分析
2017/04/01 Javascript
基于JavaScript实现的希尔排序算法分析
2017/04/14 Javascript
jQuery+koa2实现简单的Ajax请求的示例
2018/03/06 jQuery
JS使用new操作符创建对象的方法分析
2019/05/30 Javascript
JS原型和原型链原理与用法实例详解
2020/02/05 Javascript
解决vue动态路由异步加载import组件,加载不到module的问题
2020/07/26 Javascript
[01:33]DOTA2上海特级锦标赛 LIQUID战队完整宣传片
2016/03/16 DOTA
python33 urllib2使用方法细节讲解
2013/12/03 Python
python 执行文件时额外参数获取的实例
2018/12/18 Python
结束运行python的方法
2020/06/16 Python
python 模拟登陆163邮箱
2020/12/15 Python
在HTML5中如何使用CSS建立不可选的文字
2014/10/17 HTML / CSS
HTML5之消息通知的使用(Web Notification)
2018/10/30 HTML / CSS
西班牙鞋子和箱包在线销售网站:zapatos.es
2020/02/17 全球购物
我有一个char * 型指针正巧指向一些int 型变量, 我想跳过它们。 为什么如下的代码((int *)p)++; 不行?
2013/05/09 面试题
招聘单位介绍信
2014/01/14 职场文书
美德少年事迹材料
2014/01/23 职场文书
大型会议策划方案
2014/05/17 职场文书
机械工程及自动化专业求职信
2014/09/03 职场文书
2015年清明节活动总结
2015/02/09 职场文书
医药公司开票员岗位职责
2015/04/15 职场文书
2015年小学教师培训工作总结
2015/07/21 职场文书
《怀念母亲》教学反思
2016/02/19 职场文书
JavaScript 对象创建的3种方法
2021/11/17 Javascript