Python实战演练之数据过滤

上章回顾

从上一章Python实战演练之数据导出中最后导出的数据表中有None的存在,它们是免费课程,这不是我们所需要的内容,所以对其进行数据过滤,保证获取数据的完整。

开启EducsdnPipeline

在settings中开启EducsdnPipeline

ITEM_PIPELINES = {
    # 为了做数据过滤,凡是要经过 MysqlPipeline的先经过 EducsdnPipeline
    # 先在EducsdnPipeline中进行过滤,MysqlPipeline就不会储存
    'educsdn.pipelines.EducsdnPipeline': 300,
    'educsdn.pipelines.MysqlPipeline': 301,
}

重写

重写pipelines.py中的EducsdnPipeline,将价格为None的数据过滤掉。

import pymysql
from scrapy.exceptions import DropItem

class EducsdnPipeline(object):
    def process_item(self, item, spider):
        if item['price'] == None:
            raise DropItem("drop item")
        else:
            return item

MysqlPipeline不做改变,和前文一致

清空表数据
再次在终端执行:

educsdn $ scrapy crawl courses

在这里插入图片描述
price == None 的数据已经被清理掉了。

原创文章 214 获赞 359 访问量 89万+

猜你喜欢

转载自blog.csdn.net/yxys01/article/details/104648136