爬虫实践:批量下载所有排行榜小说

一、目标
排行榜的地址:http://www.qu.la/paihangbang/
找到各类排行旁的的每一部小说的名字,和在该网站的链接。
二、观察网页的结构
很容易就能发现,每一个分类都是包裹在:
之中,
这种条理清晰的网站,大大方便了爬虫的编写。
在当前页面找到所有小说的连接,并保存在列表即可。
三、列表去重的小技巧:
就算是不同类别的小说,也是会重复出现在排行榜的。
这样无形之间就会浪费很多资源,尤其是在面对爬大量网页的时候。
这里只要一行代码就能解决:
这里调用了一个list的构造函数set:这样就能保证列表里没有重复的元素了。
四、代码实现
模块化,函数式编程是一个非常好的习惯,坚持把每一个独立的功能都写成函数,这样会使代码简单又可复用。
1.网页抓取头:
2.获取排行榜小说及其链接:
爬取每一类型小说排行榜,
按顺序写入文件,
文件内容为 小说名字+小说链接
将内容保存到列表
并且返回一个装满url链接的列表
3.获取单本小说的所有章节链接:
获取该小说每个章节的url地址,并创建小说文件
4.获取单页文章的内容并保存到本地
这里有个小技巧:
从网上爬下来的文件很多时候都是带着
之类的格式化标签,
可以通过一个简单的方法把它过滤掉:
html = get_html(url).replace('
', '\n')
这里单单过滤了一种标签,并将其替换成‘\n’用于文章的换行,
6.主函数
7.输出结果
5.缺点:
本次爬虫写的这么顺利,更多的是因为爬的网站是没有反爬虫技术,以及文章分类清晰,结构优美。
但是,按照这篇文的思路去爬取小说,
大概计算了一下:
一篇文章需要:0.5s
一本小说(1000张左右):8.5分钟
全部排行榜(60本):8.5小时!
那么,这种单线程的爬虫,速度如何能提高呢?
自己写个多线程模块?
其实还有更好的方式:scrapy框架
后面可将这里的代码重构一边遍,
速度会几十倍甚至几百倍的提高了!
这其实也是多线程的威力!

卖到缺货,高端触觉驱动器性能有多优秀?
中航光电推新型VMP水密连接器,满足海洋装备的连接需求
模拟电子技术的十年新发展计划
借助OpenUSD实现无缝数字孪生协作
启明信息连续入选国家规划布局内重点软件企业
爬虫实践:批量下载所有排行榜小说
支持烧录Geehy极海半导体的32位微控制器APM32F407RET6
可靠而高效的工业PCB连接,如何轻松实现?
联影智能推出一款基于摄像头实现360度人体3D建模的“智能之眼”
区块链能为广告行业做些什么
远心镜头原理及使用范围简介
Aruba打造802.11ax系列新品 为物联网插上智能化翅膀
关于KUKAC4机器人测量工具坐标的作用浅析
源创通信 Asterisk E1 语音卡介绍
ToF传感器将取代IR传感器,并应用于脸部识别
解答ps/vr可用在旧款ps4上吗
5MP一体化高清机芯——复杂场景监控设计利器
一文浅谈横河电机工业物联网(IIoT)
华为5G在日美受阻 德国反对将任何供应商排除在5G网络计划之外
工业物联网数据采集系统中NAT网关(网段隔离器)有什么功能