Scrapy——Feed exports
阿新 • • 發佈:2018-12-10
實現爬蟲時最經常提到的需求就是能合適的儲存爬取到的資料,或者說,生成一個帶有爬取資料的“輸出檔案”,來供其它系統使用。 Scrapy自帶了Feed輸出,並且支援多種序列化格式及儲存方式。
序列化方式
feed 輸出使用到了Item exporters。其自帶的型別有:
- JSON
- JSON lines
- CSV
- XML
也可以通過FEED_EXPORTERS設定擴充套件支援的屬性。
JSON
- FEED_FORMAT:json
- 使用的exporter:JsonItemExporter
JSON lines
- FEED_FORMAT:jsonlines
- 使用的exporter:JsonLinesItemExporter
CSV
- FEED_FORAT:csv
- 使用的exporter:CsvItemExporter
XML
- FEED_FORMAT:xml
- 使用的exporter:XmlItemExporter
Pickle
- FEED_FORMAT:pickle
- 使用的exporter:PickleItemExporter
Marshal
- FEED_FORMAT:marshal
- 使用的exporter:MarshalItemExporter
儲存
使用feed輸出時你可以通過使用URL來定義儲存端。feed輸出支援URL方式支援的多種儲存後端型別。 自帶支援的儲存後端有:
- 本地檔案系統
- FTP
- S3
- 標準輸出
儲存URL引數
儲存URL也包含引數。當feed被建立時這些引數可以被覆蓋:
- %(time)s-當feed被建立時被timestamp覆蓋
- %(name)s-被spider的名字覆蓋
其他命名的引數會被spider同名屬性所覆蓋。
儲存端
本地檔案系統 將feed儲存在本地系統。
- URL scheme:file
- URL樣例:file:///tmp/export.csv
- 需要的外部依賴庫:none
只有在本地檔案系統時,你可以指定一個絕對路徑/tmp/export.csv並忽略協議。不過這僅僅只能在Unix系統中工作。 FTP 將feed儲存在FTP伺服器
- URL scheme:ftp
- URL樣例:
ftp://user:[email protected]/path/to/export.csv
- 需要的外部依賴庫:none
S3 將feed儲存在Amazon S3
- URL scheme:S3
- URL樣例:
s3://mybucket/path/to/export.csv
s3://aws_key:[email protected]/path/to/export.csv
- 需要的外部依賴庫:boto
你可以通過在URL中傳遞user/pass來完成AWS認證,或者也可以通過下列的設定來完成:
- AWS_ACCESS_KEY_ID
- AWS_SECRET_ACCESS_KEY
標準輸出 feed輸出到Scrapy程序的標準輸出
- URL scheme:stdout
- URL樣例:stdout
- 不需要外部依賴庫
設定
配置feed輸出的設定:
- **FEED_URL:**輸出feed的URL。
- **FEED_FORMAT:**輸出feed的序列化格式。
- **FEED_STORE_EMPTY:**是否輸出空feed。
- **FEED_STORAGES:**包含專案支援的額外feed儲存端的字典。字典的鍵是URL協議,值是儲存類的路徑。
- FEED_STORAGES_BASE 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內建支援的feed儲存端的字典 FEED_EXPORTERS 包含專案支援的額外輸出器的字典,該字典的鍵是URL協議,值是Item輸出器類的路徑。 FEED_EXPORTERS_BASE 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內建支援的feed輸出器的字典。