新版功能。
實(shí)現(xiàn)爬蟲時(shí)最經(jīng)常提到的需求就是能合適的保存爬取到的數(shù)據(jù),或者說(shuō),生成一個(gè)帶有爬取數(shù)據(jù)的”輸出文件”(通常叫做”輸出 feed”),來(lái)供其他系統(tǒng)使用。
Scrapy 自帶了 Feed 輸出,并且支持多種序列化格式(serialization format)及存儲(chǔ)方式(storage backends)。
feed 輸出使用到了 Item exporters 。其自帶支持的類型有:
您也可以通過 FEED_EXPORTERS 設(shè)置擴(kuò)展支持的屬性。
使用 feed 輸出時(shí)您可以通過使用 URI(通過 FEED_URI 設(shè)置) 來(lái)定義存儲(chǔ)端。feed 輸出支持 URI 方式支持的多種存儲(chǔ)后端類型。
自帶支持的存儲(chǔ)后端有:
有些存儲(chǔ)后端會(huì)因所需的外部庫(kù)未安裝而不可用。例如,S3 只有在 boto 庫(kù)安裝的情況下才可使用。
存儲(chǔ) URI 也包含參數(shù)。當(dāng) feed 被創(chuàng)建時(shí)這些參數(shù)可以被覆蓋:
%(time)s
- 當(dāng) feed 被創(chuàng)建時(shí)被 timestamp 覆蓋%(name)s
- 被 spider 的名字覆蓋其他命名的參數(shù)會(huì)被 spider 同名的屬性所覆蓋。例如, 當(dāng) feed 被創(chuàng)建時(shí), %(site_id)s
將會(huì)被 spider.site_id
屬性所覆蓋。
下面用一些例子來(lái)說(shuō)明:
存儲(chǔ)在 FTP,每個(gè) spider 一個(gè)目錄:
ftp://user:password@ftp.example.com/scraping/feeds/%(name)s/%(time)s.json
存儲(chǔ)在 S3,每一個(gè) spider 一個(gè)目錄:
s3://mybucket/scraping/feeds/%(name)s/%(time)s.json
將 feed 存儲(chǔ)在本地系統(tǒng)。
file
file:///tmp/export.csv
none
注意: (只有)存儲(chǔ)在本地文件系統(tǒng)時(shí),您可以指定一個(gè)絕對(duì)路徑 /tmp/export.csv 并忽略協(xié)議(scheme)。不過這僅僅只能在 Unix 系統(tǒng)中工作。
將 feed 存儲(chǔ)在 FTP 服務(wù)器。
ftp
ftp://user:pass@ftp.example.com/path/to/export.csv
none
將 feed 存儲(chǔ)在 Amazon S3 。
您可以通過在 URI 中傳遞 user/pass 來(lái)完成 AWS 認(rèn)證,或者也可以通過下列的設(shè)置來(lái)完成:
AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY
feed 輸出到 Scrapy 進(jìn)程的標(biāo)準(zhǔn)輸出。
這些是配置 feed 輸出的設(shè)定:
Default:None
輸出 feed 的 URI。支持的 URI 協(xié)議請(qǐng)參見存儲(chǔ)端(Storage backends)
。
為了啟用 feed 輸出,該設(shè)定是必須的。
輸出 feed 的序列化格式??捎玫闹嫡?qǐng)參見序列化方式(Serialization formats)
。
Default:False
是否輸出空 feed(沒有 item 的 feed)。
Default::{}
包含項(xiàng)目支持的額外 feed 存儲(chǔ)端的字典。 字典的鍵(key)是 URI 協(xié)議(scheme),值是存儲(chǔ)類(storage class)的路徑。
Default:
{
'': 'scrapy.contrib.feedexport.FileFeedStorage',
'file': 'scrapy.contrib.feedexport.FileFeedStorage',
'stdout': 'scrapy.contrib.feedexport.StdoutFeedStorage',
's3': 'scrapy.contrib.feedexport.S3FeedStorage',
'ftp': 'scrapy.contrib.feedexport.FTPFeedStorage',
}
包含 Scrapy 內(nèi)置支持的 feed 存儲(chǔ)端的字典。
Default::{}
包含項(xiàng)目支持的額外輸出器(exporter)的字典。 該字典的鍵(key)是 URI 協(xié)議(scheme),值是 Item 輸出器(exporter) 類的路徑。
Default:
FEED_EXPORTERS_BASE = {
'json': 'scrapy.contrib.exporter.JsonItemExporter',
'jsonlines': 'scrapy.contrib.exporter.JsonLinesItemExporter',
'csv': 'scrapy.contrib.exporter.CsvItemExporter',
'xml': 'scrapy.contrib.exporter.XmlItemExporter',
'marshal': 'scrapy.contrib.exporter.MarshalItemExporter',
}
包含 Scrapy 內(nèi)置支持的 feed 輸出器(exporter)的字典。