java小说目录提取_中文编程,用python编写小说网站爬虫

news/2024/5/18 21:44:47/文章来源:https://blog.csdn.net/weixin_39753747/article/details/111670232

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

作者:乘风龙王

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

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

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

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

  • requests(获取网页内容)
  • BeautifulSoup4(解析网页内容)

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

寻找目标

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

d8c50b3263bc2b9fa4afecea915d8f7d.png

嗯,全是盗版。

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

cd3f04a37b360606fdf051aaae8c2fcc.png

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

c095e9286f17238e86aea2cee28e12d6.png

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

框架

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

42a147cc8372c998377b8dc63125d72e.png

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

55a7d18f5f2b430394fd1a69cc0258cb.png

提取目录

先查看一下目录页的内容

84ceb46ce68409fbfab49aa42247cd5f.png
dff10dbf439db3895213cfb3d96f86e7.png

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

d7c731afdc215ffa33be1035c00cdf3e.png

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

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

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

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

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

2b9bc321efd07ea8a327adad1abf1ca1.png

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

提取正文

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

84dff6c45642713a1549cbd7d4bee06f.png
20edb0d8f01ae87fb7b469fb441cec24.png

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

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

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

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

cb3a43ce29b59ed45bd4a5dbd94eafd4.png
d2a0002b5faf5e65e106b9d50fd095a4.png

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

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

f1f627abc4d928e663558f9d719a33bc.png

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

return f处理正文(v正文文本)
de4b0b25a03b49ae02c82d1336f57f4c.png

这样看起来好多了。

保存

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

991b71c26d1f79da2cb5cb1043e43392.png

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

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

eeb91d083eefc1b79d052080f3cdf1e0.png

结尾

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_825669.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VS2010 Web网站发布详解

对VS2010来说,发布Web是一件相当容易的事情,也许就是这个原因导致网上关于发布网站具体细节的资料很少。然而这些正是初学者所需要的,下面我详细介绍一下Web网站发布的具体过程。 第一步:在解决方案资源管理器中右击Web应用程序名…

在PC上测试移动端网站和模拟手机浏览器的5大方法(转)

一、Chrome*浏览器 chrome模拟手机总共有四种方法,原理都一样,通过伪装User-Agent,将浏览器模拟成Android设备。以下标星的为推荐方法。 1.新建Chrome快捷方式 右击桌面上的Chrome浏览器图标,在弹出的右键菜单中选择“复制”&…

ArcGIS最权威、最专业的技术分享网站:积思园(www.iarcgis.com)

你对iArcGIS.com说点什么 为什么会有该网站的产生 在这个所谓的“大数据”的时代,每个人都深陷于海量信息无法自拔,因为过多碎片化的数据只会让自己的思维更加迷离,快餐式的阅读只会让自己变得虚胖。iArcGIS.com团队正在试图以工匠精神把最纯…

WordPress优化:6种方法加快WordPress网站运行

WordPress作为一个平台,本身具有非常良好的编码,性能也不错。 但是有些人选择WordPress建站后,总喜欢装一大堆拖慢网站速度的垃圾插件,然后选一个垃圾的虚拟主机。当然,即使你没有在自己的WordPress网站上面做一些傻逼…

CentOS服务器安装宝塔并搭建网站

前言: 买了个Linux服务器,今天决定试试宝塔面板 建立图形化界面: 为了方便我们的使用,我们先给Linux服务器创建图形化界面,我这里是CentOS7.4 首先先用命令给yum升级: yum -y update 然后安装“X Wind…

在你的网站、浏览器中集成3D模型预览功能,使用开源项目Online3DViewer

开源项目Online3DViewer # 通过url参数形式预览模型 https://3dviewer.net/#[3D模型URL]Online3DViewer 是一个免费、开源的web解决方案,可以让我们在浏览器中探索和扩展3D模型。 支持文件类型 导入 obj (with mtl and texture)3ds (with texture)stl (text and …

优秀网站收集

日常生活或工作总免不了搜索引擎寻找资料。 以下推荐些近期发现的“推荐APP或网站”类型好用并且持续活跃更新的网站,再次也算做个记录,后期想找资料时可以重翻阅此篇随笔。 1. egouz 分享互联网优秀资源-国外网站推荐,目前收录国外网站 1443…

创建自己的专属网站的简要流程

创建一个自己专属的网站途径有两个:第一,借助网络服务公司快速建站,直接在搜索器上输入“快速建站”就可以得到很多快速建站的网站,如图1。选择其中一个品牌,注册好了就会有模板,而且大部分支持自定义域名。…

linux网站宝塔无法访问ipv6,centos7宝塔面板服务器开启纯IPV6访问

随着互联网世界日新月异的发展,ipv6好像已经成为一种必不可少的趋势,但是当前国内机房大部分还不能支持ipv6,腾讯云亦如此。同时,现在有部分程序在服务器上运行的时候,需要服务器能监听一个ipv6地址才行,因…

指的是什么意思_SEO是指什么意思?怎么做好SEO优化?

现在随着移动互联网时代的迅速发展,越来越多网络平台上的竞争越来越激烈。所以,很多企业想要获得较好的转化,都需要借助有效的方法进行推广,而在网络上推广想要获得较好的效果,需要优先提高自身网站的搜索结果&#xf…

网站功能操作分布引导插件:Intro.js介绍;React里如何使用Intro.js以及如何进行分页导航...

插件作用:使用向导,引导新用户正确使用Web网站。我的环境是ReactMobx。 基本使用介绍,参加代码地址里的README.md:https://github.com/usablica/intro.js 安装:npm install intro.js --save 在项目里的app.js里引入css…

MOSS2007工作组网站使用:向WSS网站中添加新闻

11.2 “通知”功能—向WSS网站中添加新闻 一个公司的网站可能最常用的功能就是在网站上发布一些文字性的东西,但作为一个网络管理员的你可能并不是一个专业的网页技术人员,所以在以前,网络管理员想要发布一条通知可能还要求助于公司或单位的网…

自己写的网站非常好,却不会展现给别人? 简直是英雄无用武之地啊!!! 来看这里 超详细教程教你部署网站!!!

大家在学习写网站的时候是否有着这样的经历——哇塞我写的网页真好看,好想让她(他)看看,但是苦于不会部署自己的网站,只能靠自己截图或者录视频给别人看,但是截图或视频又不能很好的展现你这个网页究竟写得…

SEO中文书签资源

为什么80%的码农都做不了架构师?>>> 以下是pagerank从0-8的书签资源,下载地址:SEO中文书签资源 (非此图,实在找不到中文的图) 色界频道——这里有顶尖的摄影大师,也有摄影爱好者,他们用相机收纳…

网站的性能问题?

导语:将页面中的CSS放在前面, js放在后面,便于渲染,然后js执行 本文将讲述大型网站中一个重要的要素,性能。 什么是性能 有人说性能就是访问速度快慢,这是最直观的说法,也是用户的真实体验。一个…

分享50个漂亮的设计师个人作品集网站案例

设计,摄影和其他创造性的职业特别需要有个人作品集网站,让你以个性方式展示自我并呈现你的作品给读者和潜在的客户。同时,这些网站中汇集的优秀设计作品和教程是获取灵感的很好的来源。今天,本文与大家分享50个漂亮的作品集网站案…

网站合并...

今天把一个中文网站和一个英文网站合并到一起&#xff0c;也就是说在中文的根目录下新建一个目录然后把英文网站拷到里面就行了&#xff0c;可是打开的时候&#xff0c;中文的可以打开&#xff0c;但是英文的就报错了 <error statusCode"403" redirect"Promp…

国外LOGO设计欣赏的200佳网站推荐(系列十五)

这个系列将向大家分享国外精美Logo设计欣赏的200佳网站&#xff0c;设计师们可通过这些网站收集的优秀Logo作品来获取灵感&#xff0c;进而设计出更加时尚、更有创意的作品&#xff0c;设计师们也可以把自己得意的Logo作品提交到这些网站&#xff0c;分享给其它的设计师朋友。 …

各大网站架构总结笔记(续)【转】

2019独角兽企业重金招聘Python工程师标准>>> 转自&#xff1a;http://www.cnblogs.com/sxwgf/archive/2011/08/16/2141632.html 前段时间给大家介绍过各大网站架构总结笔记&#xff08;MySpace、Flickr、YouTube、PlentyOfFish、WikiPedia&#xff09;&#xff0c;喜…

web开发经验推荐-新网站项目中的8个有用片段

作为Web开发人员的工作&#xff0c;往往需要尝试新的学习。某些代码在我们的开发当中是非常头疼的&#xff0c;比方说Clearfix的清除&#xff0c;全CSS3渐变&#xff0c;自定义 font-face等等这些特殊的样式&#xff0c;因为他们对IE的支持不是很好&#xff0c;每次遇到我们都需…