在pipeline.py里面新建一个类
class mysqlPipeline(object): def process_item(self,item,spider): ''' 将爬取的信息保存到mysql ''' # 将item里的数据拿出来 # title = item['title'] # link = item['link'] # posttime = item['posttime'] name = item['name'] state = item['state'] author = item['author'] _type = item['_type'] update = item['update'] data_chapter = item['data_chapter'] # 和本地的newsDB数据库建立连接 db = pymysql.connect( host='localhost', # 连接的是本地数据库 user='root', # 自己的mysql用户名 passwd='root', # 自己的密码 db='test', # 数据库的名字 charset='utf8mb4', # 默认的编码方式: cursorclass=pymysql.cursors.DictCursor) try: # 使用cursor()方法获取操作游标 cursor = db.cursor() # SQL 插入语句 sql = "INSERT INTO NEWS(name, state, author, _type, update, data_chapter) \ VALUES ('{0}', '{1}', '{2}', '{3}', '{4}', '{5}')".format(name, state, author, _type, update, data_chapter) # 执行SQL语句 cursor.execute(sql) # 提交修改 db.commit() finally: # 关闭连接 db.close() return item
我们需要在Settings.py将我们写好的PIPELINE添加进去
ITEM_PIPELINES={ 'manhua.pipelines.mysqlPipeline': 100, }
在mysql中创建数据库和表
# 创建数据库:scrapyDB ,以utf8位编码格式,每条语句以’;‘结尾 CREATE DATABASE scrapyDB CHARACTER SET 'utf8'; # 选中刚才创建的表: use scrapyDB; # 创建我们需要的字段:字段要和我们代码里一一对应,方便我们一会写sql语句 CREATE TABLE detailed( id INT AUTO_INCREMENT, name char(24), state char(24), author char(128), _type char(24), _update char(24), data_chapter char(24), PRIMARY KEY(id) )ENGINE=InnoDB DEFAULT CHARSET='utf8';