使用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)
相關文章
- 如何將 EXCEL 資料寫入資料庫Excel資料庫
- scrapy爬蟲框架呼叫百度地圖api資料存入資料庫爬蟲框架地圖API資料庫
- 做資料庫分離讀寫時,sqlServer資料庫資料同步的問題:資料庫SQLServer
- Python3爬蟲資料入資料庫---把爬取到的資料存到資料庫,帶資料庫去重功能Python爬蟲資料庫
- 資料庫同步資料庫
- 儲存資料到MySql資料庫——我用scrapy寫爬蟲(二)MySql資料庫爬蟲
- 阿里Canal框架資料庫同步-實戰教程阿里框架資料庫
- 資料庫框架Sugar的使用資料庫框架
- 把業務邏輯寫入應用程式,而不是資料庫資料庫
- 自己動手寫Android資料庫框架Android資料庫框架
- 資料同步:教你如何實時把資料從 MySQL 同步到 OceanBaseMySql
- DataX將MySql資料庫資料同步到Oracle資料庫MySql資料庫Oracle
- DataX將Oracle資料庫資料同步到達夢資料庫Oracle資料庫
- 完善昨天寫的資料庫結構同步方案資料庫
- (7)資料庫讀寫分離,主從同步實現方法(資料庫設定)資料庫主從同步
- Scrapy框架的使用之Scrapy入門框架
- Scrapy框架-通過scrapy_splash解析動態渲染的資料框架
- MapReduce之----往hbase資料庫寫入資料時, 出現資料異常資料庫
- 使用canal增量同步mysql資料庫資訊到ElasticSearchMySql資料庫Elasticsearch
- Django 直接使用資料庫連線和遊標讀寫資料庫Django資料庫
- 資料庫框架Sugar的使用詳解資料庫框架
- 在scrapy的pipelines中連線資料庫資料庫
- 資料庫同步利器 otter 雙A同步配置資料庫
- 資料庫讀寫分離,主從同步實現方法資料庫主從同步
- 使用 EasyWechat 同步微信粉絲到資料庫資料庫
- SQL資料同步到ElasticSearch(三)- 使用Logstash+LastModifyTime同步資料SQLElasticsearch
- 資料庫非同步操作資料庫非同步
- [資料庫]MYSQL主從同步資料庫MySql主從同步
- PG 資料庫 從阿里雲pg rds 同步資料。資料庫阿里
- redis—非關係型資料庫Redis資料庫
- 【Falsk 使用資料庫】---- 資料庫基本操作資料庫
- 資料庫入門之3張表對比關係型與非關係型資料庫資料庫
- android 檢視資料庫和shaedpreference資料框架Android資料庫框架
- 小程式中使用ECharts 非同步載入資料Echarts非同步
- 關係型資料庫與非關係型資料庫介紹!資料庫
- Pandas讀寫資料庫資料庫
- 在登入資料庫的使用!sql資料庫SQL
- CAS 5.3使用MySQL資料庫登入MySql資料庫