上章回顧
從上一章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
的數據已經被清理掉了。