首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

手把手教你如何用代码批量下载排行榜小说

程序员修炼营

免费分享最新的编程资源、实用工具等。

最近我的一个朋友让我推荐给他几本小说,还说了一句如果能下载好打包发给他就更好了...我听了后有点无奈,营长不太喜欢看小说类书籍,但是又很想帮帮这个懒惰的朋友,于是,我就想到了用python爬虫去把排行榜小说全部下载下来不就可以了嘛。

说干就干,营长就写了下面的文章,顺便教给大家。程序非常简单,有些基础的朋友都能看懂,感兴趣的朋友可以边学技术边下载看小说,美滋滋啊!

一、目标

排行榜的地址:

首先找到各类排行榜的的每一部小说的名字,和在该网站的链接。

二、观察网页的结构

F12查看页面源码

很容易就能发现,每一个分类都是包裹在:

之中,

这种条理清晰的网站,大大方便了爬虫的编写。

在当前页面找到所有小说的链接,并保存在列表即可。

三、列表去重的小技巧:

就算是不同类别的小说,也是会重复出现在排行榜的。

这样无形之间就会浪费很多资源,尤其是在面对爬大量网页的时候。

这里只要一行代码就能解决:

这里调用了一个list的构造函数set:这样就能保证列表里没有重复的元素了。

四、代码实现

模块化,函数式编程是一个非常好的习惯,坚持把每一个独立的功能都写成函数,这样会使代码简单又可复用。

1.网页抓取头:

2.获取排行榜小说及其链接:

3.获取单本小说的所有章节链接:

4.获取单页文章的内容并保存到本地

这里有个小技巧:

从网上爬下来的文件很多时候都是带着

之类的格式化标签,

可以通过一个简单的方法把它过滤掉:

html = get_html(url).replace('

', '\n')

这里单单过滤了一种标签,并将其替换成‘\n’用于文章的换行,

6.主函数

7.输出结果

五、缺点:

本次爬虫写的这么顺利,更多的是因为爬的网站是没有反爬虫技术,以及文章分类清晰,结构优美。

但是,按照这篇文的思路去爬取小说,

大概计算了一下:

一篇文章需要:0.5s

一本小说(1000张左右):8.5分钟

全部排行榜(60本):8.5小时!

那么,这种单线程的爬虫,速度如何能提高呢?

自己写个多线程模块?

其实还有更好的方式:Scrapy框架

感兴趣的朋友可以自己尝试一下,

速度会几十倍甚至几百倍的提高了!

这其实也是多线程的威力!

好啦,今天的分享就到这,大家如果有什么需求可以在后台加我微信告诉我,我会尽量去帮助大家的,一起加油!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180607G1PNIZ00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券