使用scrapy框架把資料非同步寫入資料庫
在setting中設定MySQL連線資訊
HOST='101.201.70.139' MYSQL_DBNAME='anttest' MYSQL_PASSWORD='Myjr678!@#' MYSQL_USER='root' 2、在pipeline中新增mysql非同步連線類
from twisted.enterprise import adbapi
import MySQLdb
from MySQLdb import cursors
class mysqlTwistedpipline(object):
def __init__(self,dbpool): self.dbpool=dbpool @classmethod def from_settings(cls,settings): dbparms = dict( host = settings['HOST'], db = settings['MYSQL_DBNAME'], user = settings['MYSQL_USER'], passwd = settings['MYSQL_PASSWORD'], charset='utf8', cursorclass=MySQLdb.cursors.DictCursor, use_unicode=True ) dbpool = adbapi.ConnectionPool('MySQLdb',**dbparms) return cls(dbpool) 3、重寫 process_item方法
def process_item(self, item, spider): query = self.dbpool.runInteraction(self.do_insert,item) query.addErrback(self.handle_error) 4.定義錯誤處理
def handle_error(self,failure): print failure 5、新增向資料庫新增資料的方法
def do_insert(self,cursor,item): SQL插入語句 無需輸入conn.commit
6、在setting.py中新增item——pipeline路徑 #完整檔案
# -*- coding: utf-8 -*- # Define your item pipelines here # # Don't forget to add your pipeline to the ITEM_PIPELINES setting # See: http://doc.scrapy.org/en/latest/topics/item-pipeline.html from twisted.enterprise import adbapi import MySQLdb from MySQLdb import cursors class ZhongguosoudiPipeline(object): def process_item(self, item, spider): return item class mysqlTwistedpipline(object): def __init__(self,dbpool): self.dbpool=dbpool @classmethod def from_settings(cls,settings): dbparms = dict( host = settings['HOST'], db = settings['MYSQL_DBNAME'], user = settings['MYSQL_USER'], passwd = settings['MYSQL_PASSWORD'], charset='utf8', cursorclass=MySQLdb.cursors.DictCursor, use_unicode=True ) dbpool = adbapi.ConnectionPool('MySQLdb',**dbparms) return cls(dbpool) def process_item(self, item, spider): query = self.dbpool.runInteraction(self.do_insert,item) query.addErrback(self.handle_error) def handle_error(self,failure): print failure def do_insert(self,cursor,item): sql_in = 'insert into land_deals(title,publish_date,province_id,province_name,articles_link,content,create_time,transact_status)VALUES ("%s","%s","%d","%s","%s","%s",now(),"%d")'%(item['title'],item['publish_time'],0,"",item['url'],item['con'].replace('"','\''),1) cursor.execute(sql_in)
相關文章
- 同步寫兩個資料庫資料庫
- PHP資料寫入MySql資料庫PHPMySql資料庫
- 使用FSO把文字資訊匯入資料庫 (轉)資料庫
- 使用 RMAN 同步資料庫資料庫
- 使用Scrapy抓取資料
- 如何將 EXCEL 資料寫入資料庫Excel資料庫
- 從設計到資料:寫給非資料人的資料入門
- scrapy爬蟲框架呼叫百度地圖api資料存入資料庫爬蟲框架地圖API資料庫
- 做資料庫分離讀寫時,sqlServer資料庫資料同步的問題:資料庫SQLServer
- 把業務邏輯寫入應用程式,而不是資料庫資料庫
- 資料庫同步資料庫
- 儲存資料到MySql資料庫——我用scrapy寫爬蟲(二)MySql資料庫爬蟲
- Python3爬蟲資料入資料庫---把爬取到的資料存到資料庫,帶資料庫去重功能Python爬蟲資料庫
- 阿里Canal框架資料庫同步-實戰教程阿里框架資料庫
- 資料庫框架Sugar的使用資料庫框架
- 把csv檔案的資料匯入到oracle資料庫中Oracle資料庫
- 資料庫寫入的問題資料庫
- DataX將MySql資料庫資料同步到Oracle資料庫MySql資料庫Oracle
- 資料同步:教你如何實時把資料從 MySQL 同步到 OceanBaseMySql
- scrapy爬蟲成長日記之將抓取內容寫入mysql資料庫爬蟲MySql資料庫
- 資料庫同步方案資料庫
- 用exp/imp把遠端資料匯入到本地資料庫中資料庫
- DataX將Oracle資料庫資料同步到達夢資料庫Oracle資料庫
- Scrapy框架的使用之Scrapy入門框架
- 自己動手寫Android資料庫框架Android資料庫框架
- 自己動手寫DB資料庫框架(增)資料庫框架
- Scrapy框架-通過scrapy_splash解析動態渲染的資料框架
- 使用python把圖片存入資料庫Python資料庫
- 完善昨天寫的資料庫結構同步方案資料庫
- 同步寫兩個資料庫--多執行緒資料庫執行緒
- NoSQL資料庫探討 -- 非關係型資料庫SQL資料庫
- (7)資料庫讀寫分離,主從同步實現方法(資料庫設定)資料庫主從同步
- DataTable資料批量寫入資料庫三種方法比較資料庫
- MapReduce之----往hbase資料庫寫入資料時, 出現資料異常資料庫
- oracle資料庫使用sqlldr命令匯入txt資料Oracle資料庫SQL
- 使用rsync同步資料
- 資料庫同步問題資料庫
- 用impdp同步資料庫資料庫