Scrapy 框架的 pipelines 参数详解

pipelines 的使用

  1. 在 pipelines.py 中创建 pipelines 的类。(也可用默认存在的类)
class PipelinesTest:

    def process_item(self, item, spider):
        print(item)
        return item
  1. 编写数据处理的函数,函数格式是固定的。
def process_item(self, item, spider):
	# 中间这里插入需要做的事情,其他的都别改
    return item
  1. 在 settings.py 中启用 pipelines
    在 settings.py 中找到如图所示代码
    image
    取消注释
    image
    再把名字给改成自己的,就行了
    image
    可以有多条管道,所以可以不改名字,而是把自己创建的管道的名字加进去,像这样
    image

  2. 编写 spider 返回的数据格式。(在 items.py 中编写,编写格式也是固定、不能更改的)

class PipelinesTestItem(scrapy.Item):
    name = scrapy.Field()

name 可以改别的,也可以多加几个,但格式得固定,例如

class PipelinesTestItem(scrapy.Item):
    name = scrapy.Field()
    hentai = scrapy.Field()
    homula = scrapy.Field()
  1. 在 spider 中导入 items
    from ..items import PipelinesTestItem

  2. 通过 yield(生成器方式) 返回数据

def parse(self, response):
    name = "丘比必死,圆神永存"
    print(name)
    yield PipelinesTestItem(name=name)

一个例子

spider.py 代码
import scrapy
from ..items import PipelinesTestItem


class TestSpider(scrapy.Spider):
    name = 'douban'
    allowed_domains = ['movie.douban.com']
    start_urls = ['https://movie.douban.com/top250?start=0&filter=']

    def parse(self, response):
        name = "丘比必死,圆神永存"
        print(name)
        yield PipelinesTestItem(name=name)
itesms.py 代码
# Define here the models for your scraped items
#
# See documentation in:
# https://docs.scrapy.org/en/latest/topics/items.html

import scrapy


class SpridertestItem(scrapy.Item):
    # define the fields for your item here like:
    # name = scrapy.Field()
    pass


class PipelinesTestItem(scrapy.Item):
    name = scrapy.Field()

pipelines.py 代码
# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: https://docs.scrapy.org/en/latest/topics/item-pipeline.html


# useful for handling different item types with a single interface
from itemadapter import ItemAdapter


class SpridertestPipeline:
    def process_item(self, item, spider):
        return item


class PipelinesTest:

    def process_item(self, item, spider):
        print(item)
        return item
如果看不懂,或者不知道哪里出了问题,可以直接把代码CV上 pycharm 试试,然后再一点点对比自己的。

第3步在 settings.py 启用 pipelines ,考虑到代码太多不好对比我就没放了,跟着第三步做就对了。

pipelines 常用的函数

一如既往地,格式是固定如下的。

  1. open_spider(self, spider) : 开启及执行
  2. process_item(self, item, spider) : 数据处理
  3. close_spider(self, spider) : 爬虫结束时调用
class PipelinesTest:

    def open_spider(self, spider):
        print('我是开始')

    def process_item(self, item, spider):
        print(item)
        return item

    def close_spider(self, spider):
        print('我是结束')

简单粗暴,这串代码全是在 pipelines.py 里的,复制上去,自己动手改一下,print 一下就知道大概的一个逻辑思路了。


如果觉得写的还不错的话,可以关注支持一下,哪有问题的话也可以随意评论的,大不了聊天嘛

posted @ 2023-02-12 02:14  淦丘比  阅读(108)  评论(0编辑  收藏  举报