mongodb 持久化 mysql_scrapy数据持久化存储(MySQL、MongoDB)
1、在setting.py中定義相關變量
#定義mysql相關變量
MYSQL_HOST = '127.0.0.1'
MYSQL_USER = 'root'
MYSQL_PWD = '123456'
MYSQL_DB = 'maoyandb'
MYSQL_CHAR = 'utf8'
2、pipelines.py中新建管道類,并導入settings模塊
def open_spider(self,spider):
# 爬蟲開始執(zhí)行1次,用于數據庫連接
def process_item(self,item,spider):
# 用于處理抓取的item數據
def close_spider(self,spider):
# 爬蟲結束時執(zhí)行1次,用于斷開數據庫連接
# -*- coding: utf-8 -*-
# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: https://docs.scrapy.org/en/latest/topics/item-pipeline.html
class MaoyanPipeline(object):
def process_item(self, item, spider):
print(item['name'])
print(item['star'])
print(item['time'])
return item
import pymysql
from .settings import *
#定義一個MYSQL管道類
class MaoyanMysqlPipeline(object):
def open_spider(self,spider):
#爬蟲程序啟動時,只執(zhí)行一次,一般用于建立數據庫連接
self.db = pymysql.connect(
host = MYSQL_HOST,
user = MYSQL_USER,
password = MYSQL_PWD,
database = MYSQL_DB,
charset = MYSQL_CHAR
)
self.cursor = self.db.cursor()
print("我是open_spider函數")
def process_item(self, item, spider):
ins = 'insert into filmtab values(%s,%s,%s)'
film_list = [
item["name"],item["star"],item["time"]
]
self.cursor.execute(ins,film_list)
self.db.commit()
#必須寫,此函數返回值會交給下一個管道處理item數據
return item
def close_spider(self,spider):
# 爬蟲程序結束時,只執(zhí)行一次,一般用于斷開數據庫連接
self.cursor.close()
self.db.close()
print("我是close_spider函數")
3、settings.py中添加此管道
ITEM_PIPELINES = {'':200}
image.png
# 注意 :process_item() 函數中一定要 return item
必須寫,此函數返回值會交給下一個管道處理item數據
總結
以上是生活随笔為你收集整理的mongodb 持久化 mysql_scrapy数据持久化存储(MySQL、MongoDB)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: go 查看全局安装了哪些包_GO 文档笔
- 下一篇: jdbc mysql 自动重连_JDBC