#-*- coding: utf-8 -*-
#define your item pipelines here##
don't forget to add your pipeline to the item_pipelines setting
#see:
import
pymysql
class
qiubaipipeline(object):
conn =none
#該方法只會在爬蟲開始執行的時候呼叫一次
cursor =none
defopen_spider(self, spider):
print("
開始爬蟲")
#self.fp = open("./data_record.txt", "w", encoding="utf-8")
self.conn = pymysql.connect(host="
127.0.0.1
", port=3306, user="
root
", password="
1228
", db="
qiubai")
#該方法就可以接受爬蟲檔案中提交過來的item物件,並且對item物件中儲存的頁面資料進行持久化儲存
#引數item就是接收到的item物件
#每當爬蟲檔案向管道提交一次item,則該方法就會被執行一次
defprocess_item(self, item, spider):
#取出item中的物件儲存資料
author = item["
author"]
content = item["
content"]
#持久化mysql儲存
sql = "
insert into data values ('%s', '%s')
" %(author, content)
(sql)
#self.fp.write(author + ":" + content + "\n\n\n")
self.cursor =self.conn.cursor()
try:
self.cursor.execute(sql)
self.conn.commit()
except
exception as e:
(e) self.conn.rollback()
return
item
#該方法只會在爬蟲結束時呼叫一次
defclose_spider(self, spider):
print("
爬蟲結束")
#self.fp.close()
self.conn.close()
class
qiubaibyfiles(object):
defprocess_item(self, item, spider):
print("
資料已寫入磁碟檔案中")
return
item
class
qiubaibyredis(object):
defprocess_item(self, item, spider):
print("
資料寫入redis中")
return item
管道檔案操作
管道檔案 includeint pipe int fildes 2 呼叫成功後,可以訪問兩個檔案描述符,fildes 0 是用來讀的檔案描述符,而fildes 1 是用來寫的檔案描述符。pipe僅允許單向通訊,fildes 0 只用來讀,fildes 1 只用來寫。若要雙向通訊,必須建立兩組管道。在...
Linux管道操作
理解linux作業系統中管道的原理和使用方法。學會編寫簡單的無名管道程式。include int pipe int filedes 2 返回值 成功,返回0,否則返回 1。引數陣列包含pipe使用的兩個檔案的描述符。fd 0 讀管道,fd 1 寫管道。首先呼叫pipe函式,產生乙個無名管道。使用fo...
redis必殺高階 管道技術
客戶端向服務端傳送乙個查詢請求,並監聽socket返回,通常是以阻塞模式,等待服務端響應。服務端處理命令,並將結果返回給客戶端。redis 管道技術 redis 管道技術可以在服務端未響應時,客戶端可以繼續向服務端傳送請求,並最終一次性讀取所有服務端的響應。例項 檢視 redis 管道,只需要啟動 ...