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

分类:

技术点:

相关文章: