zoukankan      html  css  js  c++  java
  • scrapy配置mysql

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

  • 相关阅读:
    Activity的四种launchMode
    Activity及Intent
    关于android中PendingIntent.getBroadcase的注册广播
    C# Parallel用法
    用Parallel.For()和Parallel.For<TLocal>()方法实现并行运行迭代
    CursorAdapter中getView newView bindView异同
    Android四大组件之ContentProvider
    Android 自动换行流式布局的RadioGroup
    真机无法接收到android.provider.Telephony.SMS_RECEIVED的问题
    Wiz开发 定时器的使用与处理
  • 原文地址:https://www.cnblogs.com/cp9648/p/10413028.html
Copyright © 2011-2022 走看看