管道高階操作

2022-09-01 02:45:07 字數 1734 閱讀 5372

#

-*- 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)

print

(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:

print

(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 管道,只需要啟動 ...