100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > python 小说爬虫_初次尝试python爬虫 爬取小说网站的小说。

python 小说爬虫_初次尝试python爬虫 爬取小说网站的小说。

时间:2020-03-14 23:54:45

相关推荐

python 小说爬虫_初次尝试python爬虫 爬取小说网站的小说。

本次是小阿鹏,第一次通过python爬虫去爬一个小说网站的小说。

下面直接上菜。

1.首先我需要导入相应的包,这里我采用了第三方模块的架包,requests。requests是python实现的简单易用的HTTP库,使用起来比urllib简洁很多,因为是第三方库,所以使用前需要cmd安装。

cmd安装方式,打开cmd,输入以下命令:

pip install requests

2.添加相应的包后,我们需要一个小说链接去爬下这本小说也就是一个url。下面是我当时爬的小说url:/5200/244309/

3.我们现在有了小说的链接,这时候就要模拟浏览器发送http的请求:

response=requests.get(url)

response.encoding='gbk'

4.我们可以尝试获取目标小说的网页源码

html=response.text

我们把它打印出来看下:

有html基础的朋友应该对这些很熟悉。通过打印我们可以看见小说的名字,作者,以及小说章节的url。这时候我们就先通过HTML网页源码获取小说的名字:

title=re.findall(r'',html)[0]

从上面的代码我们可以看见是通过正则表达式去匹配的,对正则表达式有疑问的同学可以自行百度下。当然不同网站的具体小说名字可能会放在不同的标签里,需要我们打开网页源码去看看下。

5.这时候我们也就新建一个文本文件来保存小说内容。

fb=open('%s.txt'% title,'w',encoding='utf-8')

这时候我们需要获取小说的章节目录对应的url,我们还是来观察下网页的源码。我们通过火狐浏览器的f12看下网页可发现:

小说的章节目标都在标签

里我们通过下面的代码获取对应的章节名和url。用一个list来存放章节信息。

dl=re.findall(r'

.*?',html,re.S)[0]

chapter_info_list=re.findall(r'(.*?)',dl)

6.这个时候我们循环每一章节,分别下载,先把章节的链接,章节名提取出来。

for chapter_info in chapter_info_list:

chapter_url,chapter_title=chapter_info

chapter_url="/5200/244309/%s " % chapter_url

chapter_url=chapter_url.replace(' ','')

我们可以看见对章节的链接进行的拼接,因为我们可以看见直接提取出来的链接是这样的:

所以也就需要一个拼接的操作,取得完整的章节链接。

这个时候来下载小说内容:

chapter_response=requests.get(chapter_url,headers=headers)

chapter_response.encoding='gbk'

chapter_html=chapter_response.text

我们先是获取到小说具体章节的页面。打开具体小说章节f12查看网页的源码:

可以清楚的看见小说的具体内容是在标签

里,和获取小说章节一样我们采用正则表达式来取得小说的内容。

chapter_content=re.findall(r'

(.*?)',chapter_html,re.S)[0]

我们把获取到的小说的内容打印出来看看,

我们看见一些奇怪的字符&nbsp,

等,我们在实际的小说里没有这些东西,这里就需要我们处理数据。进行一些操作,也叫做数据的清洗。

chapter_content=chapter_content.replace('','')

chapter_content=chapter_content.replace('

','')

chapter_content=chapter_content.replace('&t;','')

清洗后的小说内容:

7.现在就是最后一步把小说保存到本地。

fb.write(chapter_title)

fb.write('\n')

fb.write(chapter_content)

fb.write('\n')

print(chapter_url,chapter_title)

我们来看下最后的结果,我们每爬完一章打印相应的章节链接信息和返回的response信息来看是否成功爬取:

当当当当,成功的爬下了这边小说。

最后总结下,本次的爬虫就很简单是小阿鹏的初次尝试,中间如果有不对的地方也希望大家的指正,谢谢!

python爬虫--爬取某网站电影下载地址

前言:因为自己还是python世界的一名小学生,还有很多路要走,所以本文以目的为向导,达到目的即可,对于那些我自己都没弄懂的原理,不做去做过多解释,以免误人子弟,大家可以网上搜索. 友情提示:本代码用 ...

python爬虫--爬取某网站电影信息并写入mysql数据库

书接上文,前文最后提到将爬取的电影信息写入数据库,以方便查看,今天就具体实现. 首先还是上代码: # -*- coding:utf-8 -*- import requests import re im ...

Python爬虫爬取全书网小说,程序源码+程序详细分析

Python爬虫爬取全书网小说教程 第一步:打开谷歌浏览器,搜索全书网,然后再点击你想下载的小说,进入图一页面后点击F12选择Network,如果没有内容按F5刷新一下 点击Network之后出现如下 ...

Python爬虫|爬取喜马拉雅音频

"GOOD Python爬虫|爬取喜马拉雅音频 喜马拉雅是知名的专业的音频分享平台,用户规模突破4.8亿,汇集了有声小说,有声读物,儿童睡前故事,相声小品等数亿条音频,成为国内发展最快.规模 ...

用Python爬虫爬取广州大学教务系统的成绩(内网访问)

用Python爬虫爬取广州大学教务系统的成绩(内网访问) 在进行爬取前,首先要了解: 1.什么是CSS选择器? 每一条css样式定义由两部分组成,形式如下: [code] 选择器{样式} [/code ...

使用Python爬虫爬取网络美女图片

代码地址如下:/demo/13500.html 准备工作 安装python3.6 略 安装requests库(用于请求静态页面) pip install ...

python爬虫—爬取英文名以及正则表达式的介绍

python爬虫—爬取英文名以及正则表达式的介绍 爬取英文名: 一. 爬虫模块详细设计 (1)整体思路 对于本次爬取英文名数据的爬虫实现,我的思路是先将A-Z所有英文名的连接爬取出来,保存在一个cs ...

Python爬虫 - 爬取百度html代码前200行

Python爬虫 - 爬取百度html代码前200行 - 改进版,增加了对字符串的.strip()处理 源代码如下: # 改进版, 增加了 .strip()方法的使用 # coding=utf-8 ...

python爬虫爬取内容中,-xa0,-u3000的含义

python爬虫爬取内容中,-xa0,-u3000的含义 - CSDN博客 /aiwuzhi12/article/details/54866310

一个简单的python爬虫,爬取知乎

一个简单的python爬虫,爬取知乎 主要实现 爬取一个收藏夹 里 所有问题答案下的 图片 文字信息暂未收录,可自行实现,比图片更简单 具体代码里有详细注释,请自行阅读 项目源码: # -*- cod ...

随机推荐

EditText添加了ImageSpan后,在两者中间不能输入纯文本

严格来说是连续插入两个ImageSpan之后,在其中间不能够输入纯文本内容. 最后发现问题出现在了SpannableString在设置ImageSpan的时候第四个参数flag的问题. spannab ...

初识html5 File API实现带有进度提示的文件上传

Html5终于解决了上传文件的同时显示文件上传进度的老问题.现在大部分的网站用Flash去实现这一功能,还有一些网站继续采用Html

with enctype=multipar ...

android的ArrayMap类

运行的时候出现: java.lang.NoClassDefFoundError: android.util.ArrayMap /questions/24 ...

artDialog.js的使用

开发项目中用到了artDialog.js,从而专门学习一下如何配置和使用. 一.artDialog是什么 artDialog是一个精巧的web对话框组件,压缩后只有十多KB,并且不依赖其他框架. 二. ...

基于Jquery easyui 选中特定的tab并更新

获取选中的 Tab // 获取选中的 tab panel 和它的 tab 对象 var pp = $('#tt').tabs('getSelected'); var tab = pp.panel('o ...

node.js入门(三)调式

1.安装调式工具 打开命令行工具,输入以下内容,然后回车. npm install -g node-inspector 等待安装成功呢后,我们就可以使用 node-debug 文件名 这个命令来调式我 ...

ASP.NET WebApi 使用Swagger生成接口文档

前言 公司一直采用Word文档方式与客户端进行交流.随着时间的推移,接口变的越来越多,文档变得也很繁重.而且一份文档经常由多个开发人员维护,很难保证文档的完整性.而且有时写完代码也忘了去更新文档,为了 ...

Linux改变语言设置的命令

--Linux语言设置--------------/09/22Linux中语言的设置和本地化设置真是一个很繁琐的事情,时不时的会出现乱码的情况,在这篇文章中讨论的是shell中出现乱码的一些解 ...

(转)JavaScript的压缩

JavaScript的压缩 (转自)/ybygjy/article/details/6995435 简述 如果非常着急,这块可以跳过直接从约束条件开始也行. J ...

比较两个Excle表格的修改内容

//输入参数为文件输入流public static Map> excelColumn2maplist(InputStream is){ ...

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。