在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';