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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM