python爬虫爬取歌曲_python爬虫实战:爬取全站小说排行榜
喜欢看小说的骚年们都知道,总是有一些小说让人耳目一新,不管是仙侠还是玄幻,前面更了几十章就成功圈了一大波粉丝,成功攀上飙升榜,热门榜等各种榜,扔几个栗子出来:
新笔趣阁是广大书友最值得收藏的网络小说阅读网,网站收录了当前......我就不打广告了(其他满足下文条件的网站也行,之前已经有做过简单爬取章节的先例了,但效果不太理想,有很多不需要的成分被留下了,来链接: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爬虫实战:爬取全站小说排行榜相关推荐
- python爬网易新闻_Python爬虫实战教程:爬取网易新闻;爬虫精选 高手技巧
Python爬虫实战教程:爬取网易新闻:爬虫精选 高手技巧 发布时间:2020-02-21 17:42:43 前言本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有, ...
- python爬虫爬取图片代码_python爬虫实战 爬取天极图片
学习爬虫个人的意见是直接实战效果会很好 不要等全学完requests ,正则表达式,BeautifulSoup等再来实际操作.其实很多实战我们并不会用到requests库,BeautifulSoup, ...
- python 爬网站 实例_python爬虫实战:之爬取京东商城实例教程!(含源代码)
前言: 本文主要介绍的是利用python爬取京东商城的方法,文中介绍的非常详细,下面话不多说了,来看看详细的介绍吧. 主要工具 scrapy BeautifulSoup requests 分析步骤 1 ...
- python爬京东联盟_python爬虫框架scrapy实战之爬取京东商城进阶篇
前言 之前的一篇文章已经讲过怎样获取链接,怎样获得参数了,详情请看python爬取京东商城普通篇,本文将详细介绍利用python爬虫框架scrapy如何爬取京东商城,下面话不多说了,来看看详细的介绍吧 ...
- python爬网易新闻_Python爬虫实战教程:爬取网易新闻
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: Amauri PS:如有需要Python学习资料的小伙伴可以加点击 ...
- python爬虫抓取房产_Python爬虫实战(3):安居客房产经纪人信息采集
1, 引言 Python开源网络爬虫项目启动之初,我们就把网络爬虫分成两类:即时爬虫和收割式网络爬虫.为了使用各种应用场景,该项目的整个网络爬虫产品线包含了四类产品,如下图所示: 本实战是上图中的&q ...
- python爬虫网络数据包_Python爬虫之多线程图虫网数据爬取(十六)
Python爬虫之多线程图虫网数据爬取(十六) 发布时间:2019-05-14 10:11, 浏览次数:289 , 标签: Python 原创不易,转载前请注明博主的链接地址:Blessy_Zhu h ...
- python爬取网页内容_Python爬虫原理解析
笔者公众号:技术杂学铺 笔者网站:mwhitelab.com 本文将从何为爬虫.网页结构.python代码实现等方面逐步解析网络爬虫. 1. 何为爬虫 如今互联网上存储着大量的信息. 作为普通网民,我 ...
- python爬虫微博评论图片_python爬虫爬取微博评论
原标题:python爬虫爬取微博评论 python爬虫是程序员们一定会掌握的知识,练习python爬虫时,很多人会选择爬取微博练手.python爬虫微博根据微博存在于不同媒介上,所爬取的难度有差异,无 ...
最新文章
- 国内外有名的安全扫描工具,你知道几个?
- C库函数:scanf、fscanf、printf、fprintf、sprintf、 snprintf
- 基于visual Studio2013解决C语言竞赛题之1085相邻之和素数
- IPv4的核心管理功能/proc/sys/net/ipv4/*
- 如何合理使用java异常_如何更合理的利用Java中的异常抛出?
- 美油合约收跌-37.65美元史上首次为负 交割没地存放拼命抛售
- ReentrantReadWriteLock可重入读写锁分析
- SPOJ3276 D-query
- Java高级程序猿技术积累
- docker搭建sonarqube做代码审计
- JavaWeb开发模式
- 【全网最全】100款七夕节情人节表白网页制作HTML+CSS+JS
- Golang编程语言简介 go语言特点
- Spring5之IOC容器中IOC操作之Bean管理(二)之p名称空间注入、外部bean、内部bean、级联赋值
- 程序员如何学习Hadoop大数据培训
- VisionPro (简单介绍)
- vs2019 android,VS2019无法安装Android SDK 28的问题
- About Google
- 漂亮的蓝色系网站设计欣赏2
- 王佩丰excel2010基础教程学习笔记(最后几讲图表的)