上章回顾
从上一章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
的数据已经被清理掉了。