文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
14.4 Pipeline
上一节完成了爬虫模块的编写,下面开始编写Pipeline,主要是完成Item到MongoDB的存储,分成两个集合进行存储:UserInfo和Relation。代码如下:
class ZhihucrawlPipeline(object): def __init__(self, mongo_uri, mongo_db): self.mongo_uri = mongo_uri self.mongo_db = mongo_db @classmethod def from_crawler(cls, crawler): return cls( mongo_uri=crawler.settings.get('MONGO_URI'), mongo_db=crawler.settings.get('MONGO_DATABASE', 'zhihu') ) def open_spider(self, spider): self.client = pymongo.MongoClient(self.mongo_uri) self.db = self.client[self.mongo_db] def close_spider(self, spider): self.client.close() def process_item(self, item, spider): if isinstance(item,UserInfoItem): self._process_user_item(item) else: self._process_relation_item(item) return item def _process_user_item(self,item): self.db.UserInfo.insert(dict(item)) def _process_relation_item(self,item): self.db.Relation.insert(dict(item))
代码和13.3节的非常类似,首先从Settings中加载MONGO_URI和MONGO_DATABASE,初始化连接URL和数据库名称,在process_item方法中判断item的类型,然后使用_process_user_item和_process_user_item方法存储到不同的集合中。下面在Settings中设置MONGO_URI,MONGO_DATABASE和激活Pipeline:
MONGO_URI = 'mongodb:// 127.0.0.1:27017/' MONGO_DATABASE='zhihu' ITEM_PIPELINES = { 'zhihuCrawl.pipelines.ZhihucrawlPipeline': 300, }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论