爬取安居客数字乱码_如何用Python爬取一部斗罗大陆小说

前两天我上三年级的大侄子问我:叔叔,斗罗大陆里小舞死后怎么样了?

我轻描淡写地回答:后来唐三把魂环给小舞,让小舞复活了。

原来是斗罗的动漫剧情更新到了小舞的死,这对一个幼小的心灵来说确实容易掀起那么一丝波澜。

其实我也不太记得斗罗大陆详细内容,毕竟是中学时期看过的书。

然后我就有了用爬虫把原小说爬下来的想法

8e01ae20b14e79a0b5ed630057ad91ca.png

单纯爬取文字内容并不难,也就是课后练习的程度吧,这对于我这种刚入门Python一个星期的初学者来说再合适不过了,所以,说干就干吧


网页分析

本来是想在起点中文网上爬正版,无奈人家后几百章都是收费的,只好作罢

fdb0c128bd2f582eabd9c5e01e307ca6.png 然后找了另一个还算干净的网站,从章节目录来看和正版没什么区别 1d1a18b034a21de75debeed48bf27019.png 既然要爬取整部小说的内容,就要对每个章节都进行一次爬取,也就要对每个章节页面都访问一遍,首先打开前三章的网址进行对比: a9cdebbd10b9a8b6d11e0dd56040e78e.png 发现不同章节的地址只有最后一个数字序列不同,然而这个序列并不是有序或者有规律的。像引子与第一节的序列差值为4,而第一节与第二节的差值为3,后面还有的相邻章节差值为2。而且如果这个序列是错的,就会跳转到其他页面 没有规律就代表不能预估某一个章节的地址,所以只能选择先爬取每一章节的标题和超链接,做成地址目录,然后依此访问每个章节。 那么就先对目录页分析,按F12进入工作台,即便前端知识匮乏如我,也能看出每一个名叫的标签就包含了一个标题的模块,中的标签就写明了标题和超链接 efb39dcd15bbdf8e141968d26b69a523.png 同样的,再对章节内的页面分析,发现小说的内容都被包含在一个
标签里,而且标签里有一个属性“ id=content ”,分析数据时只要找到这一个标签就能找到我们要的文字 d4490594490c499b4c238279f6ea3eee.png
核心代码 代码要实现的功能也很简单 # 地址访问与源码获取 # 分析章节和超链接生成列表 # 分析小说内容 # 对小说内容修正并写入文件 一天后...... 然而我写了八个函数…… 倒不是说逻辑有多难实现,而是这个网站真的很坑爹…… 本还觉得这个网站比较干净,没想到只是前几章干净而已。都了后面既有广告乱入,也有错位乱码,还有文字被替换,有拼音,有重复的章节名和空白章节,本来文字修正只用正则表达式写了五六行,后来越写越多,索性直接写了个修正列表,在函数里循环修正(就这还没改全呐):

772d578e528abb20c6061a60aa0eb42d.png

但即便每一章的文字都要进行这么多次修正,程序进度也不会在写入文件时停留,而是地址访问占用的时间最长,不得不令人感叹正则表达式的强大 a3ed6fb530ed8c011ca11e607fca79ea.png

还有的章节源码标签和前面的不一样,直接导致要新增一个匹配模板,第一种匹配不了要换第二种。除此之外还有各种问题,就不一一细说了……

我把原项目文件夹打包上传到了蓝奏云,就当留个纪念吧,有兴趣的小伙伴可以自行复制链接下载: novel_spider项目(Python3.9,编译软件PyCharm): https://wws.lanzous.com/iGRBgjuek3g 爬到的斗罗大陆小说全本: https://wws.lanzous.com/iWBL4jud87c
部分代码的截图展示: (访问,分析,保存章节列表的三个函数) d1c81d4dfbc5bfb40614fbc8e4099503.png 1ae4ddc46243fd70150a4988719cf246.png 4cbc137e575b21e9fa3b9f79229f55dd.png

再过两天就是元旦了,提前祝大家元旦快乐!

孟同学

c3a64bc6465201202ee5dfa42288b8a7.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值