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

admin 2022年3月10日21:09:27评论103 views字数 1046阅读3分29秒阅读模式

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

一、目标


排行榜的地址: http://www.qu.la/paihangbang/

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

二、观察网页的结构


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

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

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

之中,

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

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

三、列表去重的小技巧:


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

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

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

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

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

四、代码实现


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

1.网页抓取头:

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

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

爬取每一类型小说排行榜,

 按顺序写入文件,

 文件内容为 小说名字+小说链接

 将内容保存到列表

 并且返回一个装满url链接的列表

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

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

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

获取该小说每个章节的url地址,并创建小说文件


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

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

这里有个小技巧:

从网上爬下来的文件很多时候都是带着<br>之类的格式化标签,

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

html = get_html(url).replace('<br/>', 'n')

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

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

6.主函数

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

7.输出结果

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

5.缺点:

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

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

大概计算了一下:

一篇文章需要:0.5s

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

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

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

自己写个多线程模块?

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

后面可将这里的代码重构一边遍,

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

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

作者:Josiah

来源:http://www.cnblogs.com/Josiah-Lin/p/7241678.html

《Linux云计算及运维架构师高薪实战班》2018年11月26日即将开课中,120天冲击Linux运维年薪30万,改变速约~~~~

    *声明:推送内容及图片来源于网络,部分内容会有所改动,版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事宜。

    - END -



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

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

    原文始发于微信公众号(马哥Linux运维):爬虫实践---一次下完所有小说:排行榜小说批量下载

    • 左青龙
    • 微信扫一扫
    • weinxin
    • 右白虎
    • 微信扫一扫
    • weinxin
    admin
    • 本文由 发表于 2022年3月10日21:09:27
    • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                     爬虫实践-一次下完所有小说:排行榜小说批量下载http://cn-sec.com/archives/825173.html

    发表评论

    匿名网友 填写信息