一。学习scrapy框架
scrapy框架的学习,我们用一个实列来初步学习scrapy框架,框架的作用等等、。。。。。。。。。大家如果不知道可以百度
学习建议:
学习不等于ctrl+c
本篇文章不会提供源代码,大家可以按照我的思路去学习
其次就是不要轻易放弃
创建一个项目,开始爬取“好听轻音乐”里面的歌曲名字与作者保存在本地
我们现在本地创建一个文件夹名字自己随便写,我们在这个文件夹里面
打开命令窗口之后我们输入
scrapy startproject mysider #medis是我们自己输入创建的scrapy框架项目名称
创建项目之后会自动生成一个文件夹
我们简单的介绍一下这些文件是干啥的
打开mysider
1。spiders文件夹里面有一个__init__.py 这里面我们用来写爬虫
2。_init.py 不能删除,虽然什么都没有但是不能删除
3。items.py 项目的目标文件,简单来说就是我们项目最后想要爬取到什么东西就写在这里面
4。middlewares.py 这个是中间件
5。pipelines.py 管道文件
6。settings.py 设置文件
第一步我们先把想要爬取的东西写入到项目目标(items.py)中去
标题第二部:写爬虫,我们在mspider中打开命令提示窗口,
创建之后我们就可以在
我们用sublime这个软件打开
我们在musicSpider.py中写爬虫的时候不需要去写请求之类的,系统会自动帮我们完成
第三部 启动爬虫
在这下面打开cmd(命令提示符)
在命令行中输入
启动之后,会生成一个文件夹
这里如果是第一次去做这个项目的同学肯定会遇到一些问题,大家不懂的就可以去百度,如果输出不了最后的music.html,大家可以配置一下在settings.py中配置 user-header,Referer,具体的我们后面讲,现在可以先去百度。。
接下来我们就可以开始我们的数据清洗
在这里我们又可以引入一个新的内容 yield 关键字
在以前我们的描写过程中我们是先把所有的内容都获取出来之后在一起传递出去,这样我们的效率就会变得很满
我们使用yield关键字可以得到一个值就传递一个值。
这里面的it 的这个值会传递到我们的管道文件中(pipelines.py)
管道文件 pipelines.py我们简单的介绍一下
我们在使用管道的时候想要去settings.xml中配置一下
我们在musicSpider.py 传递过来的值将在process_item()这个方法中调用,
接下来我们在
这样我们一个简单的数据清洗就完成了
自动下一页继续查询
我们上面的一个实列只可以指定查询第一页而不可以查询第二页
其实这个换页查询也很简单,下面我们就可以描述一下我们的思路
- 我们在进行下一页的时候只需要知道下一的URL就可以了,而我们根据 网页中的下一页可以知道
- 第一页的地址是:http://www.htqyy.com/top/musicList/hot?pageIndex=0&pageSize=20
第二页的地址是:http://www.htqyy.com/top/musicList/hot?pageIndex=1&pageSize=20
第三页的地址是:http://www.htqyy.com/top/musicList/hot?pageIndex=2&pageSize=20 - 根据地址的规律我们可以得出地址中 只有 pageindex="" 这里面的值在改变
- 我们只需要先获取到url
- 然后用正则表达式获取到pageindex=“”中的值加一就可以在构造下一页的URL了
- 用一个if来判断pageindex=“”里面的值我们就知道我们获取的是多少页的值
- 最后 用yield关键字传递:scrapy.Request(我们创建的url,callback=self.parse)
之后我们在用cmd 执行scrapy crawl musicSpider 之后我们就可以得到music.text里面就保存了10页的歌曲名字和作者