一、写在前面
好久没更新了,快半个月了,也少有读者催着更新,于是乎自己就拖啊,为公众号出路想方设法,着实是有点迷失自我,废话不多说了。
今天是爬虫系列第9篇,上一篇
Scrapy系统爬取伯乐在线
中我们已经利用Scrapy获取到了伯乐在线网站所有文章的基本数据,但我们没有做存储操作,本篇,我们就好好讲讲怎么利用Scrapy框架知识进行存储--Item做数据结构+Pipeline操作数据库。
二、你不得不知道的 Knowledge
1. 本篇涉及到的英文单词
2.Item作用
Item主要用于定义爬取的数据结构,自己指定字段存储数据,统一处理,创建需要继承类,并且定义类型为,不用区分数据类型,数据类型取决于赋值时原始数据的数据类型,它的使用方法和字典类似。
3.Pipeline作用
当Item在Spider中被收集之后,它将会被传递到Item Pipeline,Pipeline主要作用是将return的items写入到数据库、文件等持久化模块。
4.Scrapy中Request函数的mate参数作用
Request中meta参数的作用是传递信息给下一个函数,使用过程可以理解成把需要传递的信息赋值给这个叫meta的变量,但meta只接受字典类型的赋值,因此要把待传递的信息改成"字典”的形式,如果想在下一个函数中取出 value,只需得到上一个函数的meta[key]即可。
三、看代码,边学边敲边记Scrapy Item和Pipeline应用
1. 目前项目目录
项目目录
2.前情回顾
实在是本系列上一篇(Scrapy系统爬取伯乐在线)距离现在太远久了,简单和大家提醒一下上一篇我们做了什么吧:
数据表
3.在Item.py中新建一个JobboleArticleItem类,用来存放文章信息
4.增加文章封面图获取
(1)页面分析
封面图url
(2)jobbole.py中修改函数
我们通过函数的参数传递获取到的
(3)Debug调试
Debug
Debug结果我们可以看出,的值成功随传入到函数中,那么我们就可以在函数中解析获取到。
(4)补全函数代码
至此Item相关代码功能就写好了,后面我们对在Pipeline中进行实际数据存储操作。
(5)激活Pipeline
修改,激活Pipeline
在setting.py文件下找到第67-69行,去除注释即可。(或者直接Ctrl+F 搜索,找到相应位置,去除注释即可)
激活Pipeline
上面操作我们就激活了Pipeline,接下来我们可以Debug一下,看看效果:
Debug测试
果然,Debug后Item传入了Pipeline,后面我们可以处理数据、存储数据。
(6)在Pipeline 中进行数据存储操作(MySql)
创建表格
存储数据
在Pipelien中创建一个数据库操作类,并配置到setting中。
中:
中:
运行结果
运行结果
我仅仅运行了1分钟,就爬下来并存储了1000条数据,而且没有被反爬掉,这个效率,让我知道,学习Scrapy没得错,可以看出Scrapy框架的强大。
四、后言
这个系列的确是太久没更新了,给大家回顾一下之前讲了些什么吧!
END
领取专属 10元无门槛券
私享最新 技术干货