懒人畅听网,有声小说类目数据采集,多线程速采案例,Python 爬虫 120 例之 23 例
多线程在 Python 爬虫学习过程中应用落地,提速,提速,再提速。
目标站点分析
本次要抓取的目标为懒人畅听网,其中我随机选择了一个分类,有声小说频道,其余频道可使用雷同的办法抓取,增加遍历之后,可以对全站进行抓取。
列表页分页规则如下本次依旧只对列表页数据进行提取,只增加多线程模块 threading
的应用,提高采集效率。
提取规则模板如下:
全站页码数,可以直接人眼读取,如果增加动态获取,提取读取一下分页处数据即可。
提取最终的数据源如下图所示,包括书名,作者,主播三部分内容。
编码时间
本次案例中对于多线程部分,除共享全局变量外,增加信号量机制,即限制线程并发数量。
信号量机制的简单 Demo 如下所示:
运行代码,会发现先运行 3 个线程,再运行 3 个线程,当然同时运行的线程之间是没有先后顺序的。
信号量,即使用 threading
模块的 BoundedSemaphore
类,该类可以设置允许一定数量的线程更改数据,即最多可同时运行几个线程。
代码完整案例如下所示
代码中 threading.active_count()
部分,用于检测是否存在活跃线程,如无,程序结束。
运行代码,得到如下结果,至此第 23 例已经学习完毕。
收藏时间
代码仓库地址:https://codechina.csdn.net/hihell/python120,去给个关注或者 Star 吧。
来都来了,不发个评论,点个赞,收个藏吗?
今天是持续写作的第 203/ 365 天。可以关注我,点赞我、评论我、收藏我啦。
版权声明: 本文为 InfoQ 作者【梦想橡皮擦】的原创文章。
原文链接:【http://xie.infoq.cn/article/f60922d5aa9e2bfd48e9c46eb】。文章转载请联系作者。
评论