python 制作网站小说下载器
作者:Martina_oh 发布时间:2021-06-07 23:04:42
标签:python,小说,下载
基本开发环境
· Python 3.6
· Pycharm
相关模块使用
目标网页分析
输入想看的小说内容,点击搜索
这里会返回很多结果,我只选择第一个
网页数据是静态数据,但是要搜索,是post请求,需要提价data参数,如下图所示:
然后通过解析网站数据,获取第一个小说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标签里面
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()
实现效果
来源:https://www.cnblogs.com/Martinaoh/p/14365832.html


猜你喜欢
- 一、Python包python包在开发中十分常见,一般通过导入包含特定功能的python模块包进行使用。当然,也可以自己创建打包模块,然后发
- 在过去的几十年里,机器学习对世界产生了巨大的影响,而且它的普及程度似乎在不断增长。最近,越来越多的人已经熟悉了机器学习的子领域,如神经网络,
- 1. 问题引出许多时候,我们对程序的速度都是有要求的,速度自然是越快越好。对于Python的话,一般都是使用multiprocessing这
- APScheduler 简介在实际开发中我们经常会碰上一些重复性或周期性的任务,比如像每天定时爬取某个网站的数据、一定周期定时运行代码训练模
- 变量名1、组成:数字、字母、下划线2、变量名要有意义3、多个单词则用下划线,如user_id4、python的变量名不要驼峰显示字符串:1、
- 成员运算符Python 提供了两个成员运算符来检查或验证值的成员资格。它测试序列中的成员资格,例如字符串、列表或元组。 in 运算
- 关于IE9,微软逐渐提供越来越多的内容。很多人想知道IE9有多少模式和渲染引擎,今天IE项目主管Marc Silbey就此问题进行了解答。S
- ASP+javascript实现可显示和隐藏的树型菜单实例:<script language=&qu
- import上一级目录的模块python中,import module会去sys.path搜索,sys.path是个列表,并且我们可以动态修
- 脚本运行环境python 3.6+edge浏览器(推荐使用,因为在edge浏览器中可以获得额外12分,当然chrome浏览器也可以)webd
- 1. 原先的配置 把 fckeditor/filemanager/connectors 目录删除; 有同学可能会问了,都删除了怎么上传文件?
- 本文实例讲述了Python二叉树的遍历操作。分享给大家供大家参考,具体如下:# coding:utf-8"""
- 点击顶部的“SQL”标签进入sql命令输入界面。输入以下命令:update mysql.user set password=PASSWORD
- 1、各种用法说明A. 最简单的用法:mysqldump -uroot -pPassword [database name] &g
- 摘要With the continuous development of time series prediction, Transform
- 回顾 MySQL / InnoDB 的改善历史。你能很容易发现。在MySQL 5.6稳定版本中从来没有在read-only 这么
- 这篇文章主要介绍了python使用opencv在Windows下调用摄像头实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有
- 前言最近在学习python,发现了解线程信号量的基础知识,对深入理解python的线程会大有帮助。所以本文将给大家介绍Python3.X线程
- 只是做笔记,没什么!! 代码如下:--创建测试表 CREATE TABLE [dbo].[Student]( [ID] [int
- 1. 错误描述之前在学习Python的过程中,导入自己写的包文件时,与之相关的方法等都会被划红线,但并不影响代码执行,如图:看着红线确实有点