原标题:中文编程,用python编写小说网站爬虫

作者:乘风龙王

原文:https://zhuanlan.zhihu.com/p/51309019

为保持源码格式, 转载时使用了截图. 原文中的源码块为文本格式.

我比较喜欢看小说,在网络上看小说一般有2种选择,正版或盗版。正版要钱,盗版要么只能在线阅读,要么下载下来一堆广告。既然学了python就应该写点爬虫练练手,把网络小说爬下来。

本文章需要的python第三方库:

requests(获取网页内容)

BeautifulSoup4(解析网页内容)

本文章需要读者具备python基础知识,并且我不会对文章中所出现的标准库、第三方库的每个类/函数的作用进行解释,请大家自行查阅资料。我不会对代码中的中文命名进行解释。

寻找目标

由于那些著名的小说网站具有很强的版权意识,防盗版措施做得很好,要把小说内容爬下来不是很容易。所以我选择一个盗版小说网站作为爬虫目标。

嗯,全是盗版。

首先编写代码获取文档内容。

打开其中一本小说目录页,记住地址,然后调用 f获取文档 测试代码是否可以运行。

看起来只输出了一半内容,实际上 v文档 已经包含了所有内容,只不过是字符串太长了被print截断而已。

框架

浏览一下小说网站结构,每个小说页面可以分为目录页、正文页。

设计2个接口,分别取名 I小说 和 I章节,I小说 用来提取小说信息和目录,I章节 用来提取章节信息和小说正文。同时定义 I文档,负责从网站上获取文档

提取目录

先查看一下目录页的内容

从图中可以看到,目录最前面有最新章节,目录最后还有重复章节,这些都是需要去除掉的,保留从正文卷开始的章节。

检查网页元素后可知道,目录包含在

元素中,章节链接藏在元素里。然后开始写代码:

提取目录的代码很简单,把上面提到的

找出来,再遍历元素,去除重复项。注意元素的href属性不包含域名,所以创建章节对象时要把地址前面部分加上。

修改一下主函数,运行代码

似乎还有重复章节。我点开一些重复章节看了一下,地址不一样但是内容是一样的,应该是网站录入时出了问题。这个我就不管了。

提取正文

提取完目录后,再看一下正文页。

发现正文最底下有广告链接,这个也要去掉。

分析网页元素,可以知道正文全部包含在

这个元素中,只要把这个元素找出来,取字符串,过滤广告就行了。

修改主函数测试代码是否可用

从运行结果看,爬到的正文有空行有缩进。虽然没有问题,但是小说最终是要放进阅读器里慢慢看的,并不是所有的阅读器都能正确处理空行和缩进,所以还要在代码里对正文进一步处理。

写一个函数叫 f处理正文,负责处理乱七八糟的空行和缩进

然后修改 C章节.fg正文,在返回字符串时做一些处理

return f处理正文(v正文文本)

这样看起来好多了。

保存

确认可以爬到目录和正文之后,接下来就是把正文保存到电脑上。

在实际测试中,网站经常返回503。如果在代码里增加错误重试功能会导致代码变得又臭又长,这里我就不写了。

打开下载下来的文本文件看看。因为网站经常503,只爬了前几章就断掉了,所以没爬完。

结尾

上面的代码可以从一个特定的小说网站下载小说。但是这个网站是盗版小说网站,容易被封掉。或者有各式各样的理由需要从另外一个网站下载小说呢?

由于上面已经写过一些代码了,只需要照葫芦画瓢,重新写个 C小说 和 C章节 就行了。其他什么都不用动。

文章里的代码省略了很多细节,比如HTTP请求头、文档编码处理、异常处理,只保留最重要的爬虫代码。完整代码我发到了github上,见:https://github.com/cflw/cflw_py。

最后请大家以学习研究为目的写爬虫,毕竟爬别人的劳动成果是不好的,请大家多多支持正版。

更多中文编程推广过程内情, 请关注“用中文编程”微信公众号.返回搜狐,查看更多

责任编辑:

python爬小说代码_中文编程,用python编写小说网站爬虫相关推荐

  1. python爬虫小说代码示例-中文编程,用python编写小说网站爬虫

    原标题:中文编程,用python编写小说网站爬虫 作者:乘风龙王 原文:https://zhuanlan.zhihu.com/p/51309019 为保持源码格式, 转载时使用了截图. 原文中的源码块 ...

  2. python拼图游戏代码_教你用Python自制拼图小游戏,轻松搞定熊孩子

    摘要:本文主要为大家详细介绍了python实现拼图小游戏,文中还有示例代码介绍,感兴趣的小伙伴们可以参考一下. 开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Pyth ...

  3. python画美女代码_教你用python爬取网站美女图(附代码及教程)

    我前几篇文章都是说一些python爬虫库的用法,还没有说怎样利用好这些知识玩一些好玩的东西.那我今天带大家玩好玩又刺激的,嘻嘻!对了,requests库和正则表达式很重要的,一定要学会!一定要学会!! ...

  4. python爬微博关键字_一个简单的python爬虫实践,爬取包含关键词的新浪微博

    此项目主要功能是通过微博"搜索"页面,每天自动爬取所有包含自定list中词汇的微博原数据.低速可控,简单粗暴,适合用来有针对性的搜集数据量不是很大的包含关键词的微博,每日可爬3-6 ...

  5. python 动态编译代码_使用PyQt(Python+Qt)+动态编译36行代码实现的计算器

    PyQt是基于跨平台的图形界面C++开发工具Qt加Python包装的一个GPL软件(GPL是GNU General Public License的缩写,是GNU通用公共授权非正式的中文翻译),Qt基于 ...

  6. python爬表情包_教你用Python来爬取表情包网站的所有表情图片

    教你用Python来爬取表情包网站的所有表情图片 配置环境 安装Python 开发环境 3X系列 win + R 打开运行,输入cmd,输入python,进行验证是否安装Python win + R ...

  7. python爬取天气预报_分分钟学会用Python爬取天气预报

    ###第一步: 请确保你已经安装了Requests和Beautifulsoup4的库,否则你可以打开CMD(命令提示符)然后输入 pip3 install requests pip3 install ...

  8. python画飞机代码_这个可能打败Python的编程语言,正在征服科学界

    原标题:这个可能打败Python的编程语言,正在征服科学界 Julia 语言是近年来科学世界中出现的一匹黑马.物理学家 Lee Phillips 发表了一篇科普文章,介绍了这种科学计算语言的真正魅力所 ...

  9. python秒表游戏代码_用20行Python代码实现2048小游戏,你会吗?

    前些天在b站上看到有个大佬用c写了一个2048小游戏,我便一下来了兴趣.心想着,我貌似也能用Python来整一波,话不多说,直接开搞. 2048的游戏规则: 2048游戏总共有16个格子,初始时会有两 ...

最新文章

  1. Java项目:美食菜谱分享平台系统设计和实现(java+springboot+mysql+ssm)
  2. 2020 年开源许可证最新趋势:67% 为宽松许可证
  3. 企业搜索引擎开发之连接器connector(二十九)
  4. Linux之数值运算:let,(()),[ ]
  5. 04 | 深入浅出索引(上)
  6. 我们并没有觉得MapReduce速度慢,直到Spark出现
  7. 如何写一份好的求职简历
  8. Unity Shader 记录
  9. python映射实体类_将Python(django)实体类转换为Java的好方法 - java
  10. 内存核心频率、工作频率,等效频率、总线频率
  11. 我裂开了,教给他如何搭建和使用代理服务器,他居然用来做这么不正经的事(爬虫,代理ip)
  12. php中通快递下单 代码,中通开放平台 预约下单接口php
  13. Swagger API文档Responses中Object类型无法显示,求指引
  14. 10.23训练赛补题
  15. Google:我能把文本变成音乐,但这个 AI 模型不能对外发布!
  16. 学校计算机社团面试自我介绍ppt,大学生大一社团面试自我介绍PPT
  17. 原来Oracle也不喜欢“蜀黍”
  18. linux下的IDE--codelite
  19. 教程:如何在OCaml中跟踪功能
  20. 微信小程序录音、播放源码【推荐】

热门文章

  1. canvas实现绘画板
  2. 【Metal2剖析(七):抗锯齿之基于Imageblock特性的增强MSAA】
  3. 微信小程序怎么判断是从哪个页面跳转进来的!!
  4. DHCP | 计算机网络
  5. 什么是Vue响应式原理?手把手教你
  6. 【编程】多道批处理调度-华为笔试
  7. ZZNUOJ_用C语言编写程序实现1217:统计立方数(附完整源码)
  8. 【mysql】gh-ost使用说明
  9. 神经网络用英文怎么说,神经网络的英文是什么
  10. Java 中添加背景音乐