Scrapy管道(pipeline)的使用

之前我们在scrapy入门使用一节中学习了管道的基本使用,接下来我们深入的学习scrapy管道的使用

1. pipeline中常用的方法:

2. 管道文件的修改

继续完善wangyi爬虫,在 pipelines.py代码中完善

import json
from pymongo import MongoClient

class WangyiFilePipeline(object):
    def open_spider(self, spider):
        if spider.name == 'baidu':
            self.f = open('json.txt', 'a', encoding='utf-8')

    def close_spider(self, spider):
        if spider.name == 'baidu':
            self.f.close()

    def process_item(self, item, spider):
        if spider.name == 'baidu':
            self.f.write(json.dumps(dict(item), ensure_ascii=False, indent=2) + ',\n')

        return item

class WangyiMongoPipeline(object):
    def open_spider(self, spider):
        if spider.name == 'baidu':

            con = MongoClient(host='127.0.0.1', port=27017)
            self.collection = con.itcast.teachers

    def process_item(self, item, spider):
        if spider.name == 'baidu':
            self.collection.insert(item)

        return item

3. 开启管道

settings.py设置开启 pipeline

......

ITEM_PIPELINES = {
    'myspider.pipelines.ItcastFilePipeline': 400,
    'myspider.pipelines.ItcastMongoPipeline': 500,
}
......

别忘了开启mongodb数据库 sudo service mongodb start

并在mongodb数据库中查看 mongo

思考:在settings中能够开启多个管道,为什么需要开启多个?

4. pipeline使用注意点

5. 小结

  • 管道能够实现数据的清洗和保存,能够定义多个管道实现不同的功能,其中有个三个方法
  • process_item(self,item,spider):实现对item数据的处理
  • open_spider(self, spider): 在爬虫开启的时候仅执行一次
  • close_spider(self, spider): 在爬虫关闭的时候仅执行一次

加油!

感谢!

努力!

Original: https://blog.csdn.net/qq_46092061/article/details/119957314
Author: ZSYL
Title: Scrapy管道(pipeline)的使用

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/789109/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球