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

下面直接上菜。

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

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

                    pip install requests

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

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

response=requests.get(url)
response.encoding='gbk'

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

html=response.text

  我们把它打印出来看下:

  

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

title=re.findall(r'<meta property="og:novel:book_name" content="(.*?)"/>',html)[0]

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

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

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

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

  小说的章节目标都在标签<div id='list'>里我们通过下面的代码获取对应的章节名和url。用一个list来存放章节信息。

dl=re.findall(r'<div id="list">.*?</div>',html,re.S)[0]
chapter_info_list=re.findall(r'<a href="(.*?)">(.*?)</a>',dl)

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

for chapter_info in chapter_info_list:chapter_url,chapter_title=chapter_infochapter_url="http://www.shujy.com/5200/244309/%s " % chapter_urlchapter_url=chapter_url.replace(' ','')

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

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

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

chapter_response=requests.get(chapter_url,headers=headers)chapter_response.encoding='gbk'chapter_html=chapter_response.text

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

  可以清楚的看见小说的具体内容是在标签<div id=content>里,和获取小说章节一样我们采用正则表达式来取得小说的内容。

chapter_content=re.findall(r'<div id="content">(.*?)</div>',chapter_html,re.S)[0]

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

  我们看见一些奇怪的字符&nbsp,<br/>等,我们在实际的小说里没有这些东西,这里就需要我们处理数据。进行一些操作,也叫做数据的清洗。

    chapter_content=chapter_content.replace('&nbsp;','')chapter_content=chapter_content.replace('<br />','')chapter_content=chapter_content.replace('&amp;t;','')

  清洗后的小说内容:

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

fb.write(chapter_title)fb.write('\n')fb.write(chapter_content)fb.write('\n')print(chapter_url,chapter_title)

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

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

  

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

转载于:https://www.cnblogs.com/mumu597/p/11355787.html

初次尝试python爬虫,爬取小说网站的小说。相关推荐

  1. python爬虫爬取《斗破苍穹》小说全文

    网络爬虫的入门学习:python爬虫爬取小说全文 python爬虫首先导入基本爬虫库requests:import requests,安装命令pip install requests,使用pychar ...

  2. python爬虫爬取某网站图片

    学习分享 | 今天刚学完爬虫,就随便写了一个爬虫代码爬取某网站的图片 网站就是这个图片网站,我选的是1080p格式,4k的要会员,我反正是还不会 导入的包如下 import requests from ...

  3. python爬虫爬取《斗破苍穹》小说(入门必备)

    小菌之前分享过几篇关于python爬虫的实战经典案例,相信许多没有学过python的小伙伴们肯定都按奈不住纷纷自学去了,哈哈O(∩_∩)O本次小菌带来的同样是适合入门级爬虫爱好者的一个基础案例--爬取 ...

  4. python爬虫爬取58网站数据_python实战学习笔记:爬取58同城平板电脑数据

    学习爬虫一周后独立完成的第一个作业项目:爬取58同城平板电脑数据. 1.首先确定URL,并抓取详情页中需要的信息 首先我们确定好需要爬取的网页URL是:http://zhuanzhuan.58.com ...

  5. Python爬虫—爬取某网站上面所有的世界港口信息数据

    最近学习了一段时间的Python基础语法后,写了一个爬取世界港口数据的爬虫,并且保存到SQL Server 数据库. 前提 公司之前有个需求是想监控集装箱如果进出某个港口的时候能给出信息提示,并且与海 ...

  6. python爬虫爬取58网站数据_Python爬虫,爬取58租房数据 字体反爬

    Python爬虫,爬取58租房数据 这俩天项目主管给了个爬虫任务,要爬取58同城上福州区域的租房房源信息.因为58的前端页面做了base64字体加密所以爬取比较费力,前前后后花了俩天才搞完. 项目演示 ...

  7. python爬虫招聘-Python爬虫-爬取招聘网站信息(一)

    学习内容,来源于百度搜索 工具及环境 1.python版本:python 3.7.3 2.安装工具:beautifulsoup 3.系统环境:Windows10 4.浏览器:chrome 网页分析 i ...

  8. python爬虫爬取某网站全站图片案列(源码全给可白漂,仅供学习使用,切勿用作非法用途)

    爬取后保存的图片效果图 步骤入下(三步): 先去要爬取的目标网站(https://pixabay.com/)去注册一个账号. 2.注册后登录,浏览器右键鼠标,打开检查,找到登录后的cookies值. ...

  9. python爬虫: 爬取boss网站数据 保存到mysql

    爬取boss数据并保存到mysql boss的反爬虫控制尤其恶心 cookies大概用3次左右就不能用了 所以爬取不了太多东西 只可用来学习 等学习完逆向爬虫课程 再来挑战挑战 example.py ...

  10. python爬虫爬取汽车网站外型图片

    我选择的起始网址:http://www.hao123.com/auto/brand 当你随便选择一个车牌的选框( 不要 同时选择多个选框)你就会发现每个车牌对应一个网址 每个网址的区别就是数字不同 比 ...

最新文章

  1. Zabbix 中文乱码解决
  2. docker概念:用Dockerfile生成Image
  3. unity3d为对象添加脚本的两种方法
  4. QT的QStyleOption类的使用
  5. Linux下axel多线程下载
  6. 当 高并发系统下 Redis 发生高延迟时,其内部到底发生了什么
  7. wpfdiagram 学习 教学_开启双自主学习模式 助力学生生命成长——长清湖实验学校开展“双自主合作学习”教学模式...
  8. UVA - 548 Tree
  9. nginx 搭建http协议拖动播放 FLV 视频播放服务器
  10. Flutter中文本输入框TexeFieldr键盘样式TextInputType总结TexeField设置不可编辑
  11. Jmeter简单的登录压力测试(使用json发送post请求)
  12. CentOS系统安装FTP服务器
  13. 在网络蚂蚁中设置代理服务器
  14. Python读取PDF文档并翻译
  15. Makefile教程(绝对经典,所有问题看这一篇足够了)
  16. EDFbrowser查看edf文件及睡眠分期认识
  17. 推荐一个好用的 sqlite 管理器 sqliteman 感觉比 navicat 好用
  18. 易语言采集网页html,易语言采集网页图片源码例程
  19. 【精华】安卓开发学习路线规划
  20. STM32F103与电脑端通信(使用NRF24L01)

热门文章

  1. 链表基础操作 / 循环链表约瑟夫环/STL链表基本操作
  2. 如何用matlab计算比例尺,宝黛爱情仍属于狭义的才子佳人小说体系。 ( )
  3. PostgreSql新建数据库——Ubuntu
  4. P2P原理的解释与实现
  5. 获取linux内核基址,LInux内核如何获取段基址和段长度
  6. 微信小程序同步方法,方法内顺序从上至下依次执行
  7. python周期函数_对python周期性定时器的示例详解
  8. 进击高手【第十期】树
  9. ui html index.html,HtmlSelect.SelectedIndex 属性
  10. Win8系统的机器如何改装Win7系统