推广 热搜: 行业  设备    系统  参数  经纪    教师  机械  中国 

Python爬虫第一战 爬取小说

   日期:2024-12-27     作者:h9ips    caijiyuan   评论:0    移动:http://fhzcwj.xhstdz.com/mobile/news/12419.html
核心提示:本文章将通过分析爬虫的思想,再加以利用两个 Python 库,即 requests 库和 re 库,让你顺利入门爬虫,

本文章将通过分析爬虫的思想,再加以利用两个 Python 库,即 requests 库和 re 库,让你顺利入门爬虫,通过本篇文章,你将学会:

Python爬虫第一战 爬取小说

  • 独立做出爬取小说的爬虫
  • 利用Python取得所要信息
  • 利用Python筛选出特定信息

如果你毫无 Python 基础,可以看看我亲自写的关于 Python 的基础专栏,这样子理解本文会更加轻松,当然你要是只想了解爬虫的过程,不关注具体的代码实现,那可以不用具备 Python 基础知识。

当今互联网实在是丰富多彩,网络上的Python教程更是数不胜数,我承认自己比不过那些大V,但是我认为自己的教程的优势是:通俗易懂,贴近初学者的水平。

背景:看小说的时候虽然能免费阅读小说内容,但是因为弹窗广告的存在,阅读体验不佳。

作为一个资深小说控,我学会 Python
爬虫之前每天必做的事便是打开手机或者电脑,进入小说网站,然后再打开我喜欢看的小说,小说是免费的,但是俗话说便宜没好货,我们在享受便宜的同时,也在牺牲一部分。
比如说我看小说的时候会被广告弹框所干扰,这让我的阅读体验不佳,既然有了问题,那我们便想着去解决,所以我一开始的解决方式是给浏览器安装去广告插件,这么一做之后体验的确好了不少,但是如果是手机端,我则无法使用这个方法,并且去广告插件也不是万能的。
那么,还有什么解决方式吗

答案是肯定的

解决方式

现在有请我们今天的主角登场,它就是大名鼎鼎的 Python

你一定很好奇,Python 是怎么解决这个问题的吧

且听我慢慢道来…

:看小说的时候会被弹框广告干扰

找到了症,那接下来自然是对症下药了,且再听我慢慢道来。既然广告对阅读有干扰,那么我们自然想
到把广告去除,关键是不能用广告去除插件,那怎么办呢? 这个问题问的好,其实我们可以换个角度思考问题
你看我们的目的是获得没有广告的阅读界面,这时候很多人想到的是直接把广告去除 的确如此,但是现在无法使用去广告插件,所以此路不通。
这时候不要轻言放弃,要记住条条大路通罗马。我们可以换个角度思考 既然你广告不走,那我小说文字就走呗,这不就实现广告与纯文字分离了吗
通过以上分析,我们找到了药

:把小说文字内容从小说所在地方提取出来

是时候对症下药了,那么这个药是怎么制成的呢?且再听我慢慢道来

说明:不了解没关系,本文附有相关链接供你学习,代码实战部分也会讲解基本用法

  • requests 库

如果把requests 库比作一个人,那么它的主要工作便是取货

库的安装方法:打开命令行(cmd、terminal,运行下面的代码

 

然后等待安装完成,出现 successfully 说明安装成功。

  • re 库

如果把re库比作一个人,那么它的主要工作便是从给定信息中提取出特定信息

爬虫,说白了就是利用技术去获取位于网络上的信息,就像你要找一本书一样,你若想找到书,就得知道它的位置,在网络中,信息的位置被称为 URL

URL 标记着信息的位置,故此,我们要想获得想要的信息们需要知道信息的 URL,那么我们怎么获得 URL 的呢?凭空臆想自然是不行的咯!虽然可能成功,但成功概率非常低

说到获取 URL 就不得不谈到 ’归纳推理‘这一方法,它与人类的发展息息相关,因为人类可以通过归纳,在大量的基本数据支持下,合理地归纳出某个事物的特点。

例如

通过观察人类的行走方式,可以归纳出人类具有直立行走的特点

我们不妨回忆以下看小说的部分流程

  1. 打开小说网站
  2. 点击要看的书籍并进入章节目录
  3. 点开具体章节开始小说正文的阅读

1.打开笔趣阁( http://www.xbiquge.la
2.点击小说《三寸人间》( http://www.xbiquge.la/10/10489/)并看到章节目录
3.点击第一章 “我要减肥”( http://www.xbiquge.la/10/10489/4535761.html )开始阅读

你一定会想,这哪有体现归纳推理呢

别急,且再听我慢慢道来,归纳推理是建立在样本足够多的基础上,上面我给的小说章节 URL 还不够多,所以我再给几个:

 

3 个或许不算多,但我相信以你的冰雪聪明,一定已经发现这 3 个 地址的共性了吧? 好,接下来让我们 求同存异

 

所以如果我们用 x 来代表小说章节 URL 的共性,y 代表不同点,z 代表小说章节完整 URL 那么应该有

 

x 我们已经知道了,所以要求 z,当然是要去求 y,那么 y 是怎么求的呢? 这就用到我们的 requests 库了,它在本文的爬虫中的作用是向某个地址发送请求(就像你用浏览器打开网页那样,只不过没有图形界面和一些动态元素),然后获得相关信息。

打个比方

requests是一个人,它具有取货的能力,如果你告诉它货物所在地址,它可以帮你去把货物取回来,取货物用到 的方法是 get 或许你还不理解,没关系,下面有相应的解释
回到求解 y 的问题,求解 y 得知道它在哪里对吧

那么 y 在哪里呢

我们回忆一下看小说的第 2 步,即

点击要看的书籍并进入章节目录

这一步骤中,如果我们点击章节目录中的任意章节,我们很快就能看到小说内容

小说章节这一货物的地址存放在小说目录这个仓库中

当然是使用我们的 requests 库咯

获取章节地址的思路

通过requests这个人访问小说总目录这一大仓库,然后从仓库中取货,这样便得到小说章节地址这些货物

请看代码

 

仔细看我们便发现 y 隐藏在形如下面的文本中

 

所以我们找到了y所在位置,验证前面的猜想的正确性

接下来要做的便是把它揪出来,那怎么把它揪出来呢?这就轮到我们的re库登场了

re库的简略介绍

re也是一个人。它的工作是审阅信息,而如果你要叫它帮你办事,你需要知道怎么和它沟通,它有 自己的语言,明白它的语言之后才能给它分配任务
下面简略介绍它的语言: 符号 . 对于我们而言是一个单纯的英文句号,但在re这个人的认知里,它代表着任意符号(除了换行符) 符号 *
对于我们而言是一个单纯的星号,但在re这个人的认知里,它代表着任意多个字符 例如 : 你好* 上面的三个字符对于re这个人而言,它的理解有
你 你好 你好好 你好好好 … 这下子你明白了吧? 符号 () 对于我们而言是单纯的括号,而在re这个人的认知里,它的作用是吧
()里面的内容包围起来, 下面会有实例介绍 注: (.*?) 这个表达式可以匹配任意文本,后面会多次涉及

请看编写正则表达式的代码:

 

接下来是求解z的方法,即拼接小说具体章节URL

您瞧

 

下面是时候通过编写正则表达式来获取小说的内容和标题了,代码如下:

 

最后,通过 requests

这个人拿着货物(小说章节)地址去提货,然后叫re这个审阅筛选人员从提取到的货物中筛选出所要信息并写入文件。

 

上面是一个代码片段,如需详细了解怎么使用 Python 操作文件,可以参考我写的教程

本文地址:http://fhzcwj.xhstdz.com/news/12419.html    物流园资讯网 http://fhzcwj.xhstdz.com/ , 查看更多

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。

 
标签: 小说 我们
 
更多>同类最新文章
0相关评论

文章列表
相关文章
最新动态
推荐图文
最新文章
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号