item 數據model保存到數據庫中

1.如何將item 數據model保存到數據庫中

  • 首先在本地建立好MySQL數據庫,再數據庫中建立好數據表
# 建立數據庫
create database item_database;
set global validate_password_length = 1;
set global validate_password_policy = 0;
grant all on item_database.* to 'xkd'@'%' identified by '123456';
flush privileges;
# 根據item建立數據表
create table item (title varchar(255) not null, image_url varchar(255) not null, date date not null, image_path varchar(255) not null, url varchar(255) not null, url_id char(50) not null primary key);

2. 安裝Python MySQL驅動

pip install mysqlclient

3. 在settings文件中修改pipeline

  • 而後爬取頁面,進行頁面解析,返回item交由settings.py文件中定義好的pipelines處理
ITEM_PIPELINES = {
   # 'XKD_Dribbble_Spider.pipelines.XkdDribbbleSpiderPipeline': 300,
   # 當items.py模塊yield以後,默認就是下載image_url的頁面
   'XKD_Dribbble_Spider.pipelines.ImagePipeline': 1,
   'XKD_Dribbble_Spider.pipelines.MysqlPipeline': 2,
}

4. 新建pipeline,寫入item到MySQL中

  • 接着在pipelines.py文件中新建一個新的pipelines類,如MysqlPipeline,在這個類中初始化數據庫鏈接,重寫process_item()方法將item的字段讀取出來,再提交到數據中表中; 最後運行項目成功後,能夠使用命令行工具查看數據是否插入成功;
class MysqlPipeline:
    def __init__(self):
        self.conn = MySQLdb.connect(host='localhost', user='xkd', password='123456', database='item_database', use_unicode=True, charset='utf8')
        self.cursor = self.conn.cursor()
    def process_item(self, item, spider):
        sql = 'insert into item(title, image_url, date, image_path, url, url_id)' \
              'values (%s, %s, %s, %s, %s, %s)'
        date = item['date']
        self.cursor.execute(sql, args=(item['title'], item['image_url'], date.strftime('%y-%m-%d'), item['image_path'], item['url'], item['url_id']))
        self.conn.commit()
        return item
    def spider_closed(self, spider):
        self.cursor.close()
        self.conn.close()

5.在本地搭建MySQL數據庫的步驟

  • 先建立數據庫:create database 數據庫名;html

  • 而後給用戶受權:grant all on 數據庫名.* to '用戶名'@'%' identified by '密碼';mysql

  • 記得刷新MySQL的系統權限相關表:flush privileges;sql

  • 在進入建立好的數據庫根據item建立數據庫表:create table item(字段);數據庫

6.查看數據庫表

  • 首先登陸MySQL數據庫,命令行:mysql -u用戶名 -p密碼;ide

  • 而後選擇咱們建立的數據庫,命令行:use 數據庫名;工具

  • 而後就能夠查看數據庫表是否成功插入數據,命令行:select * from item;url

  • 當數據庫表中數據不少的時候,咱們能夠在查詢語句末尾加入一個\G參數,橫向的表結構會轉爲使用縱向表結構輸出,利於閱讀;命令行

參考:https://www.9xkd.com/user/plan-view.html?id=1693196261code

相關文章
相關標籤/搜索