scrapy实战二:scrapy item pipeline组件实现细节
一、 scrapy item pipeline组件实现细节
Scrapy存入MySQL或是其他数据库,虽然scrapy没有给我们提供拿来就用的类,但是她已经给我们实现了部分方法,我们继承它给我们实现的方法就能轻松的把数据存入你想存入的数据库,那我们要肿么继承呢?
其实就是编写一个pipeline组件,我们需要实现一个pipeline,实现了之后,我们蜘蛛爬取的数据(也就是item定义的内容),通过yield便提交给了pipeline,然后在pipeline里面就可以实现数据的:去重、存储。
名义上这里是说scrapy数据存储到mysql,但其实关键是介绍pipeline的编写方式,也就是学习我们要怎么在设置里设置pipeline、怎样在pipeline里面继承scrapy给我们提供的关于pipeline的方法、怎样创建对数据库的连接,好了,接下来我们一一来看!
1.继承pipeline必要方法:
如果我们要编写一个pipeline组件,如:MySQLPipline(命名随意,根据这个类的具体功能来即可),我们必须实现这个方法:
process_item(self, item, spider)
这个方法有两个参数,一个是item,一个是spider。
spider就是爬取数据的蜘蛛,item就是爬取到的数据,执行完数据库插入之后,需要执行返回,也就是需要:return item。
以上方法是必须要实现的方法,无论你是插入mysql、mongodb还是其他数据库,都必须实现这么一个方法;另外除了这么一个方法,scrapy还提供了另外两个:
import pymysql class MySQLPipeline(object): def __init__(self): # 连接数据库 self.connect = pymysql.connect( host='127.0.0.1', port=3306, user='root', passwd='123456', charset='utf8', db='yourdb', use_unicode=True ) # 通过cursor执行增删查改 self.cursor = self.connect.cursor() def process_item(self, item, spider): return item
接下来我们就需要实现scrapy给我们提供的方法:process_item(self, item, spider)进行数据的存储,看一下具体实现:
posted on 2018-11-15 18:01 myworldworld 阅读(140) 评论(0) 收藏 举报