項目示例:糗事百科段子爬取并基于終端進(jìn)行持久化存儲

1)創(chuàng)建項目

2)編寫爬蟲

3)修改配置

4)執(zhí)行程序

基于終端指令的持久化存儲
要求:只可以將 parse 方法的返回值存儲到本地的文本文件中
注意:持久化存儲對應(yīng)的文本文件的類型只可以為:'json', 'csv' 等指定類型
指令:scrapy crawl spidername -o filepath
好處:簡介高效便捷
缺點:局限性比較強(qiáng)(數(shù)據(jù)只可以存儲到指定后綴的文本文件中)
基于管道的持久化存儲
1)數(shù)據(jù)解析(參照上文)

2)在 item 類中定義相關(guān)的屬性(items.py:數(shù)據(jù)結(jié)構(gòu)模板文件,定義數(shù)據(jù)屬性)

3)將解析的數(shù)據(jù)封裝存儲到 item 類型的對象

4)將 item 類型的對象提交給管道進(jìn)行持久化存儲的操作

5)在管道類的 process_item 中要將其接受到的 item 對象中存儲的數(shù)據(jù)進(jìn)行持久化存儲操作

6)在配置文件中開啟管道

- 程序執(zhí)行

- 好處:通用性更強(qiáng)
補充
如果最終需要將爬取到的數(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í)行的管道類