喜欢看小说的骚年们都知道,总是有一些小说让人耳目一新,不管是仙侠还是玄幻,前面更了几十章就成功圈了一大波粉丝,成功攀上飙升榜,热门榜等各种榜,扔几个栗子出来:

新笔趣阁是广大书友最值得收藏的网络小说阅读网,网站收录了当前......我就不打广告了(其他满足下文条件的网站也行,之前已经有做过简单爬取章节的先例了,但效果不太理想,有很多不需要的成分被留下了,来链接:http://python.jobbole.com/88560/。我们本文就爬取这个网站的上千本小说。重点在和大家一起分享一些爬虫的思路和一些很常遇到的坑。

一、爬取单本小说

爬取该网站相对来讲还是很容易的,打开编辑器(推荐使用PyCharm,功能强大),首先引入模块urllib.request(Python2.x的引入urllib和urllib2即可,待会我把2.x的也写出来给大家看看),给出网站URL,写下请求,再添加请求头(虽然这个网站不封号,但作者建议还是要养成每次都写请求头的习惯,万一那天碰到像豆瓣似的网站,一不留神就把你封了)话不多说,直接上图:

然后再将请求发送出去,定义变量response,用read()方法观察,注意将符号解码成utf-8的形式,省的乱码:

打印一下看结果:

看到这么一大条就对喽,对比一下网页源码,发现是一致的。

这步观察很重要,因为这就说明该网站没有使用AJAX异步加载,否则就要开始抓包的工作了,这个我们留着分析动态网站时候再说。建议大家在没有更好的方法时使用。之前记得确实有直接判断的方法,然而一不小心忘记了,有知道的读者还请发给我哦。

我们现在得到了网站的response,接下来就是对我们想要获取的数据进行解析、提取,但等等,考虑到我们要爬取大量小说,不搞一个数据库存储真是太失败了,作者推荐MongoDB数据库,属于NOSQL类型数据库,以文档存储为主,这里用来爬小说真是太适合不过了。但安装起来需要一定的程序,想要试着做做的骚年可以参考一下下载和安装教程,参考链接:http://blog.csdn.net/u011262253/article/details/74858211,在安装好后为方便启动,可以添加环境变量,但这里有个坑,你要先打开mongod(注意是mongodb,别一上来就打开mongo),然后需要准确添加dbpath路径,不然打开很容易就会失败,上图上图:

失败状态

成功状态

添加路径后成功连接,出现waiting for connections on port 27017,则表示数据库连接成功,而后就不要关掉这个终端了,只有保持数据库是连接的,才可运行MongoDB数据库(不然报错你都不知道自己是怎么死的)

好了,连接好数据库后,我们将数据库与编辑器进行交互链接,位置很隐秘,在File>>Settings>>Plugins下添加组件Mongo Plugin,没有就下载一个:

盗个图

我们在编辑器内编写代码,引入Python专门用来与MongoDB交互的模块pymongo,然后在最上面链接MongoDB数据库的端口,默认是27017,我们先创建一个叫做reading的数据库,然后在reading内新建一个叫做sheet_words的数据表,代码如下:

我们先找一个叫做《修罗武神》的小说来练练手,个人来讲,我很讨厌看小说时来回的翻页,有时候还跳出广告,这时候我还得返回去重新翻页,作为一名懒得不行的懒人,我想到要是把整部小说放进一个文档里再看不就好了么,但要是一章一章的复制粘贴我想还是算了吧,这时候你就知道爬虫是有多么便捷了。好,现在我们要做的是把《修罗武神》这部小说完整的爬取下来,并在数据库中备份。我们回到刚才停留的地方,在得到response后,我们应该选用一种方法来解析网页,一般的方法有re,xpath,selector(css),建议新手使用xpath而不是re,一是因为re用不好很容易导致错误,“当你决定用正则表达式解决问题时,你有了两个问题。”,相比较xpath才是步骤明确,十分稳妥;二是在Firefox,Chrome等浏览器中可以直接复制xpath路径,大大的减少了我们的工作量,上图:

如果你决定使用xpath之后,我们需要从lxml中引入etree模块,然后就可以用etree中的HTML()方法来解析网页了,从网页>检察元素(F12)中复制下来我们所需数据的路径,我选择的是小说每章的标题和内容,上图,上图:

路径//div[@class="readAreaBox content"]/h1/text()

路径/html/body/div[4]/div[2]/div[2]/div[1]/div[2]/text()

注意注意,又来一个坑,当你复制xpath时得到的是这个东东:

//div[@class="readAreaBox content"]/h1

和这个东东;

/html/body/div[4]/div[2]/div[2]/div[1]/div[2]

但你需要的是这个路径里的文本text,故我们需要另外添加具体文本:/text(),然后就像上面那样啦。上代码,查数据:

完整代码见百度网盘:

链接:https://pan.baidu.com/s/1jHYNF86密码:ho9d

小说有点大,一共是三千五百章,等个大约4-7分钟吧,打开文件夹《修罗武神小说》,就可以看到我们下载好的无需翻页的一整部小说,数据库内页备份好了每章的链接,它自动从零开始排的,就是说你要看第30章就得打开序号为29的链接,这个调一下下载时的顺序就好了,作者很懒,想要尝试下的读者可以自行更改。

小说文本

数据库连接

看看,感觉还不错吧,好的小例子讲完了,接下来我们准备进入正题。

我们要像上面的例子那样爬取整个网站,当然这里就不再建议使用普通的编辑器来来执行了,聪明的读者已经发现,一部小说爬了4分钟,那么上千本不说,单单是一组排行榜里的100本就够爬好一会了,这就显示出Scripy框架的作用,用专门的Scripy框架写工程类爬虫绝对快速省力,是居家写虫的必备良药哇。

二、爬取小说榜所有小说

首先安装Scrapy的所有组件,建议除pywin32以外都用pip安装,不会的话度娘吧,很简单的,pywin32需要下载与你所用Python版本相同的安装文件。

来连接:https://sourceforge.net/projects/pywin32/

Scrapy插件安装成功

然后还是老规矩,不想每次终端运行都一点一点找路径的话,就将根目录添加到环境变量,然后打开终端,我们测试一下是否安装成功:

Scrapy安装成功

好,安装完毕后,打开终端,新建一个Scrapy工程,这里你可以根据索引,选择使用Scrapy的各种功能,这里不一一详解了,D盘内已经出现了我们建立好的Scrapy工程文件夹:

打开文件夹,我们会看到Scrapy框架已经自动在reading文件夹中放置了我们所需的一切原材料:

打开内部reading文件夹,就可以在spiders文件夹中添加爬虫py代码文件了:

我们这里定向爬小说排行榜,除了我们写的spider文件,还要在items.py中定义我们要爬取的内容集,有点像词典一样,名字可以随便取,但已有的继承类scrapy.Item可不能改,这是Scrapy内部自定义的类,改了它可找不到,spider就用我们上面抓取单本再加一个for循环就OK了,十分简单,一言不合就上图:

爬虫文件截图

爬取的小说排行榜

每个排行榜上大约20本小说

每部小说的爬取情况(用的是.json格式)

小说显示内容

想要完整代码的骚年们,见百度网盘链接:

items:

链接:https://pan.baidu.com/s/1pKLMyWr

密码:3dee

Settings:

链接:https://pan.baidu.com/s/1slkKQV7

密码:xn0u

Spider:

链接:https://pan.baidu.com/s/1nvBrrtf

密码:76z8

至此,我们所需的数据就都爬取完了,它们都按照相应的文件夹目录放置好在相应位置,适合条理性的观看。

作者:黑黄条纹的野喵           © 著作权归作者所有

来源:作者投稿   链接:https://www.jianshu.com/p/c32ad98e7ee6

Python网络爬虫与数据挖掘

学习Python和网络爬虫关注公众号:datanami

入群请回复「学习」

近期文章:

python爬虫爬取歌曲_python爬虫实战:爬取全站小说排行榜相关推荐

  1. python爬网易新闻_Python爬虫实战教程:爬取网易新闻;爬虫精选 高手技巧

    Python爬虫实战教程:爬取网易新闻:爬虫精选 高手技巧 发布时间:2020-02-21 17:42:43 前言本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有, ...

  2. python爬虫爬取图片代码_python爬虫实战 爬取天极图片

    学习爬虫个人的意见是直接实战效果会很好 不要等全学完requests ,正则表达式,BeautifulSoup等再来实际操作.其实很多实战我们并不会用到requests库,BeautifulSoup, ...

  3. python 爬网站 实例_python爬虫实战:之爬取京东商城实例教程!(含源代码)

    前言: 本文主要介绍的是利用python爬取京东商城的方法,文中介绍的非常详细,下面话不多说了,来看看详细的介绍吧. 主要工具 scrapy BeautifulSoup requests 分析步骤 1 ...

  4. python爬京东联盟_python爬虫框架scrapy实战之爬取京东商城进阶篇

    前言 之前的一篇文章已经讲过怎样获取链接,怎样获得参数了,详情请看python爬取京东商城普通篇,本文将详细介绍利用python爬虫框架scrapy如何爬取京东商城,下面话不多说了,来看看详细的介绍吧 ...

  5. python爬网易新闻_Python爬虫实战教程:爬取网易新闻

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: Amauri PS:如有需要Python学习资料的小伙伴可以加点击 ...

  6. python爬虫抓取房产_Python爬虫实战(3):安居客房产经纪人信息采集

    1, 引言 Python开源网络爬虫项目启动之初,我们就把网络爬虫分成两类:即时爬虫和收割式网络爬虫.为了使用各种应用场景,该项目的整个网络爬虫产品线包含了四类产品,如下图所示: 本实战是上图中的&q ...

  7. python爬虫网络数据包_Python爬虫之多线程图虫网数据爬取(十六)

    Python爬虫之多线程图虫网数据爬取(十六) 发布时间:2019-05-14 10:11, 浏览次数:289 , 标签: Python 原创不易,转载前请注明博主的链接地址:Blessy_Zhu h ...

  8. python爬取网页内容_Python爬虫原理解析

    笔者公众号:技术杂学铺 笔者网站:mwhitelab.com 本文将从何为爬虫.网页结构.python代码实现等方面逐步解析网络爬虫. 1. 何为爬虫 如今互联网上存储着大量的信息. 作为普通网民,我 ...

  9. python爬虫微博评论图片_python爬虫爬取微博评论

    原标题:python爬虫爬取微博评论 python爬虫是程序员们一定会掌握的知识,练习python爬虫时,很多人会选择爬取微博练手.python爬虫微博根据微博存在于不同媒介上,所爬取的难度有差异,无 ...

最新文章

  1. 国内外有名的安全扫描工具,你知道几个?
  2. C库函数:scanf、fscanf、printf、fprintf、sprintf、 snprintf
  3. 基于visual Studio2013解决C语言竞赛题之1085相邻之和素数
  4. IPv4的核心管理功能/proc/sys/net/ipv4/*
  5. 如何合理使用java异常_如何更合理的利用Java中的异常抛出?
  6. 美油合约收跌-37.65美元史上首次为负 交割没地存放拼命抛售
  7. ReentrantReadWriteLock可重入读写锁分析
  8. SPOJ3276 D-query
  9. Java高级程序猿技术积累
  10. docker搭建sonarqube做代码审计
  11. JavaWeb开发模式
  12. 【全网最全】100款七夕节情人节表白网页制作HTML+CSS+JS
  13. Golang编程语言简介 go语言特点
  14. Spring5之IOC容器中IOC操作之Bean管理(二)之p名称空间注入、外部bean、内部bean、级联赋值
  15. 程序员如何学习Hadoop大数据培训
  16. VisionPro (简单介绍)
  17. vs2019 android,VS2019无法安装Android SDK 28的问题
  18. About Google
  19. 漂亮的蓝色系网站设计欣赏2
  20. 王佩丰excel2010基础教程学习笔记(最后几讲图表的)

热门文章

  1. NSN HLR simulator for provisioning in expect
  2. 北达软微服务架构设计与实践圆满结束
  3. 微商分销管理系统开发解决方案
  4. 常用Linux操作系统的发展历史
  5. 顶级 Swift 服务端框架对决 Node.js
  6. 使用ADO或ADO控件访问数据库
  7. PSTN PLMN ISDN
  8. 安装ps时显示建议重启计算机,安装 photoshop cs6提示建议重新启动计算机的解决办法...
  9. 看美剧学英语 看一部大片胜过在美生活十天
  10. 滚动字幕Marquee代码大全