# 管道的類名隨便寫历造,通常以Pipeline結(jié)尾
# 但是船庇,方法名 process_item 千萬不能寫錯
import json
import pymongo
class ItcastJsonPipeline(object):
? ? # 在爬蟲啟動時,調(diào)用一次
? ? def open_spider(self, spider):
? ? ? ? #print(spider.name)
? ? ? ? self.file = open("itcast.json", "w")
? ? # 引擎將spider返回的item對象臣淤,交給了管道的 process_item方法進(jìn)行存儲處理窃爷。
? ? def process_item(self, item, spider):
? ? ? ? json_str = json.dumps(dict(item), ensure_ascii=False) + ",\n"
? ? ? ? self.file.write(json_str)
? ? ? ? return item
? ? # 在爬蟲結(jié)束時,調(diào)用一次
? ? def close_spider(self, spider):
? ? ? ? self.file.close()
class ItcastMongoPipeline(object):
? ? def open_spider(self, spider):
? ? ? ? self.teacher = pymongo.MongoClient().itcast.teacher
? ? def process_item(self, item, spider):
? ? ? ? self.teacher.insert(dict(item))
? ? ? ? return item