第九次:Item+Pipeline数据存储

一、写在前面

好久没更新了,快半个月了,也少有读者催着更新,于是乎自己就拖啊,为公众号出路想方设法,着实是有点迷失自我,废话不多说了。

今天是爬虫系列第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

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180926G21NBV00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券