提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 写在之前
  • 一、基础知识
  • 二、编写代码
    • 1.引入库
    • 2.读入数据
    • 3.获取书名和章节名
    • 4.通过循环语句来获取各个章节的内容
    • 5.写入文件
    • 6.打包文件
  • 总结

写在之前

这个程序是去年8月份写的,之所以现在写这篇博客,是想记录下来我编写的过程,以及复习以下python的知识。


提示:以下是本篇文章正文内容,下面案例可供参考

一、基础知识

关于python的基础知识,例如:三大流程,四大容器,函数,方法等,可以看看我之前的博客。
所谓小说下载器,实际上就是将一些网站上的在线阅读的小说,使用爬虫获取该网页的html文件,之后使用正则表达式提取出小说的正文,最后使用open()来保存小说内容到本地。

二、编写代码

1.引入库

代码如下(示例):

import requests
import re
from os import path
import os
import time

2.读入数据

代码如下(示例):

print("\t\t\t$$$欢迎来到1.7版本,本版本可以自己在下载指定的小说$$$\t\t\t\n\n\n")print("\t\t\t请在您的浏览器上面输入:www.23txt.com\t\t\t\n\n\n")url=input("请输入您要下载的小说链接,例如:https://www.23txt.com/files/article/html/39/39976/:")
print("!!!请将你的命令提示符最大化,否则将引起您视觉上强烈不适!!!")
time.sleep(3)s = requests.Session()
#https://www.23txt.com/files/article/html/39/43065/ 爬取网页的html文件html = s.get(url)
html.encoding = 'gbk'  # 根据网页源代码中的格式来改

这部分代码主要是使用requests模块来爬取需要下载的小说的网页

3.获取书名和章节名

代码如下(示例):

filename=re.findall(r"<meta property=\"og:title\" content=\"(.*)\"/>",html.text)#获取书名
filename=str(filename)
filename = filename.replace('[', '').replace(']', '')link = re.findall(r'<a href="(/files/article/html.*?\.html)">.*?</a>', html.text)#提取章节id

这一部分主要使用正则表达式来提取小说的书名,和章节id。在编写程序的时候要注意观察网页上章节的关系,有的是按照顺序,这种直接采取循环语句。还有的章节id可能没有任何关系,这种可以将所有的章节id提取出来将他们放到一个列表中,通过循环列表中的id来读取各个章节的内容从而来下载小说所有的内容。

4.通过循环语句来获取各个章节的内容

代码如下(示例):

for i in link:url = 'https://www.23txt.com' + i  # 下载章节 字符串连接网址# 网页源代码s1 = requests.Session()r1 = s1.get(url)r1.encoding = 'gbk'#提取章节名name = re.findall(r'<h1>(.*)</h1>', r1.text)[0]#提取正文chapters = re.findall(r'<div id="content">(.*?)</div>', r1.text, re.S)[0]#优化小说内容chapters = chapters.replace(' ', '')chapters = chapters.replace('<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;', '\n  ')chapters = chapters.replace('&nbsp;&nbsp;&nbsp;&nbsp;', '  ')chapters = chapters.replace('[', '').replace(']', '')s = str(chapters)s_replace = s.replace('<br/><br/> ', "\n")

这一部分主要通过拼接出来url来读取所有的章节内容,之后使用正则表达式来提取出纯净的内容,咳咳,正则表达式,用的不好,后面又使用了多次的替换。才获得比较纯净的文章。

5.写入文件

代码如下(示例):

save_path='C:\\小说'#创建存储路径#判断存储文件夹是否在if path.exists(save_path):with open(save_path+"\\{}.txt".format(filename), "a", encoding='UTF-8') as f:f.write('\t' + str(name) + '\t\n')with open(save_path+"\\{}.txt".format(filename), "a", encoding='UTF-8') as f:f.write(s_replace+'\n')print("-$下载完毕$-\t\t\t\t\t{}\t\t\t\t\t-$下载完毕$-\n\n\n".format(name))else:os.makedirs(save_path)print(save_path+"\\{}.txt".format(filename))with open(save_path+"\\{}.txt".format(filename), "a", encoding='UTF-8') as f:f.write('\t' + str(name) + '\t\n')with open(save_path+"\\{}.txt".format(filename), "a", encoding='UTF-8') as f:f.write(s_replace+'\n')print("-$下载完毕$-\t\t\t\t\t{}\t\t\t\t\t-$下载完毕$-\n\n\n".format(name

注意:这一部分也在循环语句中,采用的是获取一章写一章的方式。

6.打包文件

安装pyinstaller包

打包文件,配上相应的图标

总结

整理到这里,感觉写这种程序主要对正则表达式的使用,其次的话,现在大多数的网站都会有反爬,所以的在第一个爬取html文件的时候设置了许多的障碍。对于这方面的知识就需要继续的学习和研究。

python程序-小说下载相关推荐

  1. 下载输入python之小说下载器version2.0

    本文是一篇关于下载输入的帖子 上一版本链接:传送门 这是我用pyinstaller打包成的exe文件,便利体验:传送门(上传了正在审核,请稍等) 这里使用了第三方库pyquery,安装方法见:上一版本 ...

  2. python 小说下载工具_下载输入python之小说下载器version2.0

    本文是一篇关于下载输入的帖子 上一版本链接:传送门 这是我用pyinstaller打包成的exe文件,便利体验:传送门(上传了正在审核,请稍等) 这里使用了第三方库pyquery,安装方法见:上一版本 ...

  3. python 小说下载工具_下载代码python之小说下载器

    时光紧张,先记一笔,后续优化与完善. 首先声明,我写这个是为了练手,我不看小说了.因为眼睛近视太厉害了,我连手机都不玩了. 小说下载器的目标是为了解决当初市面上能下载最新小说的网站是在太少了,但是在线 ...

  4. Python实现小说下载器,可以打包exe

    前言 闲的无聊,现在没得什么好剧追(你们或许可以给我推荐推荐) 朋友都在看小说,那我就来用Python搞一个小说下载器吧 顺便打包一下 实现步骤 爬虫基本四个步骤: 采集一章小说内容 发送请求, 模拟 ...

  5. python之小说下载器version3.0

    1.0版本链接:传送门 2.0版本链接:传送门 我想了一下,每个版本打包exe 意义不大,如果是最终版什么的 打一个还行,所以暂时不打包了 有需要的可以留言,我在打包. 这里使用了第三方库pyquer ...

  6. python编程免费小说_使用Python开发小说下载器,不再为下载小说而发愁

    有点荒废 这几天有点荒废,之前弃坑的网文<伏天氏>,这几天又给捡起来了.然后一发不可收拾的只想看小说,荒废了我的学习.在这里我要检讨啊..... 像我这样的穷人,看小说肯定是找免费的网站, ...

  7. python +pyqt 小说下载阅读器 转语音合成 ,基于PyQt5生成图形页面(已打成exe可直接下载使用)

    最近在学习python,写了一款简单的小说下载器,基本功能都已经实现,废话不多说 直接上效果 简单说下功能把 1.支持在线阅读,翻页 键盘快捷键上下(阅读) 左右(翻页).可以导出TXT到本地,默认是 ...

  8. 使用Python开发小说下载器,不再为下载小说而发愁 #华为云·寻找黑马程序员#

    需求分析 免费的小说网比较多,我看的比较多的是笔趣阁.这个网站基本收费的章节刚更新,它就能同步更新,简直不要太叼.既然要批量下载小说,肯定要分析这个网站了- 在搜索栏输入地址后,发送post请求获取数 ...

  9. python程序实例下载_Python经典实例

    领取成功 您已领取成功! 您可以进入Android/iOS/Kindle平台的多看阅读客户端,刷新个人中心的已购列表,即可下载图书,享受精品阅读时光啦! - | 回复不要太快哦~ 回复内容不能为空哦 ...

  10. python程序如何下载_Python 如何下载文件

    利用程序自己编写下载文件挺有意思的.Python中最流行的方法就是通过Http利用urllib或者urllib2模块.当然你也可以利用ftplib从ftp站点下载文件.此外Python还提供了另外一种 ...

最新文章

  1. 经验之谈|处理不平衡数据集的7个技巧
  2. R语言ggplot2可视化分面图(facet_grid)、自定义缩小分面图标签栏的高度、但是不改变标签栏标签文本的大小、通过element_text函数的margin参数设置实现
  3. c程序语言设定定义域,4.22C语言学习日记:变量的定义域及编译预处理
  4. R学习笔记:运行时间记录
  5. 【数据结构与算法】之深入解析运用链表结构计算“两数相加”的算法实现
  6. mybatisdb.sql
  7. LeakCanary——直白的展现Android中的内存泄露
  8. 炫酷插件_PS如何做炫酷动图?推荐5款黑科技PS插件(3D动态|分散粒子|烟雾特效..)帮你轻松实现...
  9. linux vi 打开乱码,liunx 中使用vim 打开 txt文件时 中文出现乱码的解决办法
  10. Word两端对齐问题
  11. (II)第二节:HelloWordl 案例
  12. ps换背景操作,巨简单
  13. UI设计师这些面试技巧你知道吗?
  14. 菜鸟编程C语言例题100,C语言编程 菜鸟练习100题(11-20)
  15. react - 利用a标签,完成下载及跳转
  16. Python-当之无愧的优雅之王
  17. 深度学习-Pytorch环境搭建(Windows)
  18. 移动端跨平台开发方案解析
  19. 仓库 store getter
  20. 【转载】Android下DLNA开发简介

热门文章

  1. 小米手机如何更换铃声和微信提示音
  2. 第二部分 自动内存管理
  3. 回溯法采用的搜索策略_下面哪种函数是回溯法中为避免无效搜索采取的策略( )...
  4. Scratch编程与游戏:大鱼吃小鱼!
  5. Ada的故事(转自互联网)
  6. 全网最简单的方法QQ透明头像设置方法(小白教程)几分钟搞定
  7. 3D打印机DIY之六------G代码命令
  8. 【无标题】领料、退料、补料
  9. 媒体应用视频超分AI神器!360P视频一键转换HD
  10. K折交叉验证大集合(KFold 、Stratified k-fold、Group k-fold、StratifiedGroupKFold)