鍍金池/ 教程/ Python/ Feed exports
Benchmarking
命令行工具(Command line tools)
下載器中間件(Downloader Middleware)
信號(hào)(Signals)
Telnet 終端(Telnet Console)
初窺 Scrapy
數(shù)據(jù)收集(Stats Collection)
Scrapyd
通用爬蟲(Broad Crawls)
Item Loaders
試驗(yàn)階段特性
Scrapy 入門教程
自動(dòng)限速(AutoThrottle)擴(kuò)展
Settings
Scrapy 終端(Scrapy shell)
下載項(xiàng)目圖片
DjangoItem
調(diào)試(Debugging)Spiders
選擇器(Selectors)
Feed exports
Spiders Contracts
借助 Firefox 來(lái)爬取
Logging
Spiders
Ubuntu 軟件包
實(shí)踐經(jīng)驗(yàn)(Common Practices)
安裝指南
Item Exporters
擴(kuò)展(Extensions)
Items
Spider 中間件(Middleware)
異常(Exceptions)
例子
發(fā)送 email
架構(gòu)概覽
常見問題(FAQ)
Jobs:暫停,恢復(fù)爬蟲
核心 API
使用 Firebug 進(jìn)行爬取
Item Pipeline
Link Extractors
Web Service
調(diào)試內(nèi)存溢出

Feed exports

新版功能。

實(shí)現(xiàn)爬蟲時(shí)最經(jīng)常提到的需求就是能合適的保存爬取到的數(shù)據(jù),或者說(shuō),生成一個(gè)帶有爬取數(shù)據(jù)的”輸出文件”(通常叫做”輸出 feed”),來(lái)供其他系統(tǒng)使用。

Scrapy 自帶了 Feed 輸出,并且支持多種序列化格式(serialization format)及存儲(chǔ)方式(storage backends)。

序列化方式(Serialization formats)

feed 輸出使用到了 Item exporters 。其自帶支持的類型有:

您也可以通過 FEED_EXPORTERS 設(shè)置擴(kuò)展支持的屬性。

JSON

  • FEED_FORMAT: json
  • 使用的 exporter: JsonItemExporter
  • 大數(shù)據(jù)量情況下使用 JSON 請(qǐng)參見 這個(gè)警告

JSON lines

  • FEED_FORMAT: jsonlines
  • 使用的 exporter: JsonLinesItemExporter

CSV

  • FEED_FORMAT: csv
  • 使用的 exporter: CsvItemExporter

XML

  • FEED_FORMAT: xml
  • 使用的 exporter: XmlItemExporter

Pickle

  • FEED_FORMAT: pickle
  • 使用的 exporter: PickleItemExporter

Marshal

  • FEED_FORMAT: marshal
  • 使用的 exporter: MarshalItemExporter

存儲(chǔ)(Storages)

使用 feed 輸出時(shí)您可以通過使用 URI(通過 FEED_URI 設(shè)置) 來(lái)定義存儲(chǔ)端。feed 輸出支持 URI 方式支持的多種存儲(chǔ)后端類型。

自帶支持的存儲(chǔ)后端有:

  • 本地文件系統(tǒng)
  • FTP
  • S3 (需要 boto)
  • 標(biāo)準(zhǔn)輸出

有些存儲(chǔ)后端會(huì)因所需的外部庫(kù)未安裝而不可用。例如,S3 只有在 boto 庫(kù)安裝的情況下才可使用。

存儲(chǔ) URI 參數(shù)

存儲(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

存儲(chǔ)端(Storage backends)

本地文件系統(tǒng)

將 feed 存儲(chǔ)在本地系統(tǒng)。

  • URI scheme: file
  • URI 樣例: file:///tmp/export.csv
  • 需要的外部依賴庫(kù):none

注意: (只有)存儲(chǔ)在本地文件系統(tǒng)時(shí),您可以指定一個(gè)絕對(duì)路徑 /tmp/export.csv 并忽略協(xié)議(scheme)。不過這僅僅只能在 Unix 系統(tǒng)中工作。

FTP

將 feed 存儲(chǔ)在 FTP 服務(wù)器。

  • URI scheme:ftp
  • URI 樣例:ftp://user:pass@ftp.example.com/path/to/export.csv
  • 需要的外部依賴庫(kù):none

S3

將 feed 存儲(chǔ)在 Amazon S3 。

  • URI scheme: s3
  • URI 樣例:
    • s3://mybucket/path/to/export.csv
    • s3://aws_key:aws_secret@mybucket/path/to/export.csv
  • 需要的外部依賴庫(kù): boto

您可以通過在 URI 中傳遞 user/pass 來(lái)完成 AWS 認(rèn)證,或者也可以通過下列的設(shè)置來(lái)完成:

AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY

標(biāo)準(zhǔn)輸出

feed 輸出到 Scrapy 進(jìn)程的標(biāo)準(zhǔn)輸出。

  • URI scheme: stdout
  • URI 樣例: stdout:
  • 需要的外部依賴庫(kù): none

設(shè)定(Settings)

這些是配置 feed 輸出的設(shè)定:

  • FEED_URI (必須)
  • FEED_FORMAT
  • FEED_STORAGES
  • FEED_EXPORTERS
  • FEED_STORE_EMPTY

FEED_URI

Default:None

輸出 feed 的 URI。支持的 URI 協(xié)議請(qǐng)參見存儲(chǔ)端(Storage backends)。

為了啟用 feed 輸出,該設(shè)定是必須的。

FEED_FORMAT

輸出 feed 的序列化格式??捎玫闹嫡?qǐng)參見序列化方式(Serialization formats)。

FEED_STORE_EMPTY

Default:False

是否輸出空 feed(沒有 item 的 feed)。

FEED_STORAGES

Default::{}

包含項(xiàng)目支持的額外 feed 存儲(chǔ)端的字典。 字典的鍵(key)是 URI 協(xié)議(scheme),值是存儲(chǔ)類(storage class)的路徑。

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 內(nèi)置支持的 feed 存儲(chǔ)端的字典。

FEED_EXPORTERS

Default::{}

包含項(xiàng)目支持的額外輸出器(exporter)的字典。 該字典的鍵(key)是 URI 協(xié)議(scheme),值是 Item 輸出器(exporter) 類的路徑。

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 內(nèi)置支持的 feed 輸出器(exporter)的字典。

上一篇:異常(Exceptions)下一篇:Settings