新版功能。
實現(xiàn)爬蟲時最經(jīng)常提到的需求就是能合適的保存爬取到的數(shù)據(jù),或者說,生成一個帶有爬取數(shù)據(jù)的”輸出文件”(通常叫做”輸出 feed”),來供其他系統(tǒng)使用。
Scrapy 自帶了 Feed 輸出,并且支持多種序列化格式(serialization format)及存儲方式(storage backends)。
feed 輸出使用到了 Item exporters 。其自帶支持的類型有:
您也可以通過 FEED_EXPORTERS 設(shè)置擴展支持的屬性。
使用 feed 輸出時您可以通過使用 URI(通過 FEED_URI 設(shè)置) 來定義存儲端。feed 輸出支持 URI 方式支持的多種存儲后端類型。
自帶支持的存儲后端有:
有些存儲后端會因所需的外部庫未安裝而不可用。例如,S3 只有在 boto 庫安裝的情況下才可使用。
存儲 URI 也包含參數(shù)。當 feed 被創(chuàng)建時這些參數(shù)可以被覆蓋:
%(time)s - 當 feed 被創(chuàng)建時被 timestamp 覆蓋%(name)s - 被 spider 的名字覆蓋其他命名的參數(shù)會被 spider 同名的屬性所覆蓋。例如, 當 feed 被創(chuàng)建時, %(site_id)s 將會被 spider.site_id 屬性所覆蓋。
下面用一些例子來說明:
存儲在 FTP,每個 spider 一個目錄:
ftp://user:password@ftp.example.com/scraping/feeds/%(name)s/%(time)s.json 存儲在 S3,每一個 spider 一個目錄:
s3://mybucket/scraping/feeds/%(name)s/%(time)s.json將 feed 存儲在本地系統(tǒng)。
filefile:///tmp/export.csvnone注意: (只有)存儲在本地文件系統(tǒng)時,您可以指定一個絕對路徑 /tmp/export.csv 并忽略協(xié)議(scheme)。不過這僅僅只能在 Unix 系統(tǒng)中工作。
將 feed 存儲在 FTP 服務(wù)器。
ftpftp://user:pass@ftp.example.com/path/to/export.csvnone將 feed 存儲在 Amazon S3 。
您可以通過在 URI 中傳遞 user/pass 來完成 AWS 認證,或者也可以通過下列的設(shè)置來完成:
AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY
feed 輸出到 Scrapy 進程的標準輸出。
這些是配置 feed 輸出的設(shè)定:
Default:None
輸出 feed 的 URI。支持的 URI 協(xié)議請參見存儲端(Storage backends)。
為了啟用 feed 輸出,該設(shè)定是必須的。
輸出 feed 的序列化格式。可用的值請參見序列化方式(Serialization formats)。
Default:False
是否輸出空 feed(沒有 item 的 feed)。
Default::{}
包含項目支持的額外 feed 存儲端的字典。 字典的鍵(key)是 URI 協(xié)議(scheme),值是存儲類(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 存儲端的字典。
Default::{}
包含項目支持的額外輸出器(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)的字典。