python爬虫小说系统_python3小说爬虫
作为一个很喜欢看书的人,有时候在网页上看小说,会被数不胜数的广告弄的很烦,刚好最近在研究python,就自己写了一个小说爬虫,并用pyqt做了图形界面。
下面介绍一下主要思路,不过就不开源了,因为我的程序目前写的也不怎么样,可以使用,但用起来不怎么舒服,性能也有待优化。
一、需求分析
需求分析很重要,不过我要做的只是一个小项目,而且我既是用户也是开发者,就没仔细的做需求分析。简单来说,功能需求有:搜索小说,下载小说,查看书架,看小说(根据目录选择章节)
二、界面设计
已经确定了功能需求有4个,初步想法就是做4个页面:搜索,下载,书架,阅读。不过搜索和下载可以合并为一个页面,所以只需3个页面即可。
但是如果做一个主窗口,再做三个功能窗口,每次选择一个功能时,都要弹出窗口,感觉比较麻烦,所以我用了QSplitter和QFrame控件进行窗口内页面替换,类似steam的商店,库,社区按钮的效果。
下面展示一下我做的界面,比较质朴,都是用的最原始的控件。
书架
bookshelf.png
搜索
search.png
阅读
read.png
三、主要功能的实现和封装
仔细分析一下功能需求,具体要做的事都有:
搜索:发送http请求,得到搜索内容
下载:抓取小说的所有内容
书架:读取本地已下载的书,显示
阅读:显示小说目录,选取章节显示本章内容
其实不难看出,搜索和下载,用到的其实就是爬虫;而其他的都是对pyqt的一些基础控件控件的操作。而对于基础控件的操作较为简单,所以这个项目的核心是爬虫。
我决定采用urllib库和BeautifulSoup库写爬虫。
爬虫对于不同的网站,要作出相应的调整。具体怎么写这里不加赘述,同样只提供思路:
先通过urllib库抓取网页内容,然后用beautiful soup进行解析。
(beautiful soup非常强大,可以方便的处理HTML和xml等格式的文件。)解析得到需要的结果,写入文件或在pyqt的控件中显示。
四、初步优化
软件构思的非常好,但写出来后,发现不尽如人意,性能,稳定性都需要改进。具体表现在:
1.抓取加分析网页的时间较长,若小说章节多,则下载耗时长。
2.循环抓取每一章有可能卡住,导致无法继续抓取。经过分析是urllib.request会卡死,具体原因还在研究。
目前我采用了两个措施来进行改进:
1.多线程抓取
最多开设5个线程进行抓取,可以节省下载时间。而且提高程序的稳定性:若一个线程停止,还可以有其他线程进行抓取。
2.pv操作防止死锁
这个是为了解决线程的同步性问题和限制最大线程数的。具体请参见操作系统死锁方面的相关知识。我是使用threading.Semaphore进行信号量的pv操作。
五、打包成可移植的EXE文件
我使用了pyinstaller进行多个py文件的打包,打包为可移植的exe文件。最近有时间了可能会写一篇博客介绍pyinstaller的用法。网上也可以很容易的查到,这里就不多说了。
最后说一点感想:
很久没有静下心来研究技术,开发程序了。平时要上课,没有成块的时间。刚好趁着假期,做点想做的东西。
同时,纸上得来终觉浅,绝知此事要躬行,在做这个软件的过程中,我也实际运用了在课上学过的一些东西。
之前,我做软件基本只注重结果。程序只要能运行成功,满足使用要求就行了。在学完人机交互之后,现在我在开发软件的过程中,也在时刻注意编程的规范性和可维护性,注意对写的代码进行合理的封装。
另外,我原来也写过多线程的程序,但是不知道线程的同步可能产生的问题,程序的健壮性可想而知。最近通过学习操作系统,我了解了死锁、临界区等在并发需要注意的东西,而且也在实际编程中对其进行了处理。
总而言之,这个项目我还会继续做下去。一方面这个软件对自己有用,另一方面也可以激励自己更加深入的学习一些东西,并且实际运用。
python爬虫小说系统_python3小说爬虫相关推荐
- python3爬虫小型代码_python3简单爬虫实现代码
分享一个python实现的网络爬虫代码.转自:http://www.cnblogs.com/yes123/p/3761388.html 写了个python3的.代码非常简单就不解释了,直接贴代码. # ...
- python网络验证系统_python3+django2 开发易语言网络验证(下)
第六步:网络验证服务器端项目上线部署 功夫不负有心人,终于部署成功啦! 前期准备: 项目名:netauth 系统:百度云服务器下的Ubuntu16.4 软件:xshell(无论如何想办法用这个跟服务器 ...
- python网络爬虫_Python爬虫实战之网络小说
今天和大家分享的是python爬虫实战,由于本人最近迷上了看网络小说,学生党又穷,只能看看网络dao版小说,现在这类dao版小说网站可以说非常的多,但是所有的网站进去都可以看见一大把的广告信息,非常影 ...
- python 小说爬虫_从零开始写Python爬虫 --- 1.7 爬虫实践: 排行榜小说批量下载
从零开始写Python爬虫 --- 1.7 爬虫实践: 排行榜小说批量下载Ehco 5 个月前 本来只是准备做一个爬起点小说名字的爬虫,后来想了一下,为啥不顺便把小说的内容也爬下来呢?于是我就写了这个 ...
- python多线程爬虫 爬取多个网页_python多线程爬虫爬取顶点小说内容(BeautifulSoup+urllib)...
思路 之前写过python爬取起点中文网小说,多线程则是先把爬取的章节链接存到一个列表里,然后写一个函数get_text每次调用这个函数就传一个章节链接,那么就需要调用n次该函数来获取n章的内容,所以 ...
- python3爬小说_python3小说爬虫
作为一个很喜欢看书的人,有时候在网页上看小说,会被数不胜数的广告弄的很烦,刚好最近在研究python,就自己写了一个小说爬虫,并用pyqt做了图形界面. 下面介绍一下主要思路,不过就不开源了,因为我的 ...
- Python爬虫--笔趣阁小说爬取
Python爬虫–笔趣阁小说爬取 爬虫用到的插件 import requests from lxml import etree 小说目录页 以小说"我有百万技能点"为例,在笔趣阁搜 ...
- python爬虫爬取歌曲_python爬虫实战:爬取全站小说排行榜
喜欢看小说的骚年们都知道,总是有一些小说让人耳目一新,不管是仙侠还是玄幻,前面更了几十章就成功圈了一大波粉丝,成功攀上飙升榜,热门榜等各种榜,扔几个栗子出来: 新笔趣阁是广大书友最值得收藏的网络小说阅 ...
- python爬虫实战-爬取小说
今天做一个爬虫练手的小实战:爬取顶点小说网的小说,实现下载到本地(虽然网站上本来就可以下载,不过还是自己写代码来有成就感嘛!) 爬取网站 进入官网后,点击元尊,就爬取这本书了. 我们先把整个网页爬下来 ...
最新文章
- 用 Linux 命令玩一个有趣的数学游戏
- package.json字段全解
- 微信支付 body不是UTF-8编码以及中文签名错误的问题
- 设计模式之十一:创建模式(Builder Pattern)
- C语言字符串类型转换为整型,c语言中将一个字符串转换到整型数据类型的函数是什么?...
- jpeglib的jpeg_finish_compress函数疑似越界
- AllWinner board 笔记
- HBase权威指南阅读——第一章
- keil4 如何生成bin文件
- xp计算机字体在哪,Windows XP系统字体库在哪-如何安装新字体
- 国产单路AHDRX芯片XS9950,替代TP9950
- android手游渠道接入业务+技术全讲解
- 数据库设计中面临的主要困难和问题的总结
- 工作督办系统功能开发设计
- C# 获取汉字的拼音首字母(转)
- 离散数学(8)——函数
- 联邦学习笔记-《Federated Machine Learning: Concept and Applications》论文翻译个人笔记
- ubuntu命令行界面自作iso镜像
- MySQL基础学习——Day5
- 用vue3实现根据出生年月计算年龄
热门文章
- 个人服务器(Linux)安装confluence
- PowerDesigner(数据库建模工具) 使用教程+如何生成主键和自增列
- 嵌入式Linux Qt设备随机死机问题分析记录
- [Tensorflow] Ubuntu下NVIDIA Driver+CUDA+cuDNN 安装踩坑总结
- php 魔术方法 sleep,PHP 魔术方法: __sleep __wakeup
- 在ROS下利用OpenCV的Mat类,将激光点云展开为深度图像(从零开始,超详细)
- 路由、中继、AP、客户端模式之间的区别
- 怎样才能做好一场直播
- C#,图论与图算法,二分图(Bipartite Graph)的霍普克罗夫特-卡普(Hopcroft Karp)最大匹配算法与源程序
- IDEA设置启动选择项目