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的Scrapy框架编写web爬虫的简单示例
Apr 17 Python
python分析网页上所有超链接的方法
May 08 Python
python之Character string(实例讲解)
Sep 25 Python
python爬虫的数据库连接问题【推荐】
Jun 25 Python
Python使用LDAP做用户认证的方法
Jun 20 Python
Python脚本利用adb进行手机控制的方法
Jul 08 Python
Django之使用内置函数和celery发邮件的方法示例
Sep 16 Python
Centos7 下安装最新的python3.8
Oct 28 Python
基于Python+Appium实现京东双十一自动领金币功能
Oct 31 Python
Python实现线性插值和三次样条插值的示例代码
Nov 13 Python
借助Paramiko通过Python实现linux远程登陆及sftp的操作
Mar 16 Python
在python image 中实现安装中文字体
May 16 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
2个自定义的PHP in_array 函数,解决大量数据判断in_array的效率问题
2014/04/08 PHP
PHP实现驼峰样式字符串(首字母大写)转换成下划线样式字符串的方法示例
2017/08/10 PHP
PHP实现Huffman编码/解码的示例代码
2018/04/20 PHP
PHP实现将多个文件压缩成zip格式并下载到本地的方法示例
2018/05/23 PHP
为radio类型的INPUT添加客户端脚本(附加实现JS来禁用onClick事件思路代码)
2010/11/11 Javascript
基于jquery的simpleValidate简易验证插件
2014/01/31 Javascript
IE中的File域无法清空使用jQuery重设File域
2014/04/24 Javascript
浅谈jquery回调函数callback的使用
2015/01/30 Javascript
浅谈下拉菜单中的Option对象
2015/05/10 Javascript
js兼容火狐获取图片宽和高的方法
2015/05/21 Javascript
JS实现的网页背景闪电闪烁效果代码
2015/10/17 Javascript
javascript实现简单计算器效果【推荐】
2016/04/19 Javascript
使用jQuery处理AJAX请求的基础学习教程
2016/05/10 Javascript
js学习总结_轮播图之渐隐渐现版(实例讲解)
2017/07/17 Javascript
webpack external模块的具体使用
2018/03/10 Javascript
Vue.js获取被选择的option的value和text值方法
2018/08/24 Javascript
详解vue文件中使用echarts.js的两种方式
2018/10/18 Javascript
vue组件定义,全局、局部组件,配合模板及动态组件功能示例
2019/03/19 Javascript
javascrit中undefined和null的区别详解
2019/04/07 Javascript
详解Nuxt.js 实战集锦
2019/11/19 Javascript
[53:10]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs VG 第一场
2018/04/11 DOTA
python通过邮件服务器端口发送邮件的方法
2015/04/30 Python
python和bash统计CPU利用率的方法
2015/07/10 Python
python 中的divmod数字处理函数浅析
2017/10/17 Python
Python面向对象之接口、抽象类与多态详解
2018/08/27 Python
opencv导入头文件时报错#include的解决方法
2019/07/31 Python
浅谈matplotlib.pyplot与axes的关系
2020/03/06 Python
如何设置PyCharm中的Python代码模版(推荐)
2020/11/20 Python
python 装饰器重要在哪
2021/02/14 Python
英国最大的汽车交易网站:Auto Trader UK
2016/09/23 全球购物
台湾母婴用品购物网站:Infant婴之房
2018/06/15 全球购物
科研先进个人典型材料
2014/01/31 职场文书
教师产假请假条
2014/04/10 职场文书
2015年手术室工作总结
2015/05/11 职场文书
幼儿园大班开学寄语(2015秋季)
2015/05/27 职场文书
2015年大学组织委员个人工作总结
2015/10/23 职场文书