項目示例:糗事百科段子爬取并基于終端進行持久化存儲
1)創(chuàng)建項目
2)編寫爬蟲
3)修改配置
4)執(zhí)行程序
基于終端指令的持久化存儲
要求:只可以將 parse 方法的返回值存儲到本地的文本文件中
注意:持久化存儲對應(yīng)的文本文件的類型只可以為:'json', 'csv' 等指定類型
指令:scrapy crawl spidername -o filepath
好處:簡介高效便捷
缺點:局限性比較強(數(shù)據(jù)只可以存儲到指定后綴的文本文件中)
基于管道的持久化存儲
1)數(shù)據(jù)解析(參照上文)
2)在 item 類中定義相關(guān)的屬性(items.py:數(shù)據(jù)結(jié)構(gòu)模板文件琐鲁,定義數(shù)據(jù)屬性)
3)將解析的數(shù)據(jù)封裝存儲到 item 類型的對象
4)將 item 類型的對象提交給管道進行持久化存儲的操作
5)在管道類的 process_item 中要將其接受到的 item 對象中存儲的數(shù)據(jù)進行持久化存儲操作
6)在配置文件中開啟管道
- 程序執(zhí)行
- 好處:通用性更強
補充
如果最終需要將爬取到的數(shù)據(jù)值一份存儲到磁盤文件凰棉,一份存儲到數(shù)據(jù)庫中忍弛,則應(yīng)該如何操作 scrapy澎粟?
上述代碼中,字典中的兩組鍵值分別表示會執(zhí)行管道文件中對應(yīng)的兩個管道類中的 process_item 方法钓葫,實現(xiàn)兩種不同形式的持久化操作廷支。
知識小結(jié)
1)管道文件中一個管道類對應(yīng)的是將數(shù)據(jù)存儲到一種平臺
2)爬蟲文件提交的item只會給管道文件中第一個被執(zhí)行的管道類接受
3)process_item 中的 return item 表示將 item 傳遞給下一個即將被執(zhí)行的管道類