フィード・エクスポート¶
バージョン 0.10 で追加.
スクレーパーを実装するときに最も頻繁に必要な機能の1つは、スクレイピングデータを適切に保存できることです。これは、他のシステムで使用されるスクレイピングデータ(一般に「エクスポートフィード」)を含む「エクスポートファイル」を生成することを意味します。
Scrapyはこの機能をすぐに使えるフィード・エクスポートで提供します。これにより、複数のシリアル化形式とストレージバックエンドを使用して、スクレイプされたアイテムを含むフィードを生成できます。
シリアル化形式¶
スクレイピングされたデータをシリアル化するために、フィードのエクスポートは アイテム・エクスポーター を使用します。 これらの形式はすぐに使用できます:
しかし、あなたは、 FEED_EXPORTERS
設定を通してサポートされているフォーマットを拡張することもできます。
JSON¶
FEED_FORMAT
:json
使用されるエクスポーター:
JsonItemExporter
JSONを大きなフィードで使用している場合は、 注意 :ref: この警告<json-with-large-data> を参照してください。
JSON lines¶
FEED_FORMAT
:jsonlines
使用されるエクスポーター:
JsonLinesItemExporter
CSV¶
FEED_FORMAT
:csv
使用されるエクスポーター:
CsvItemExporter
エクスポートする列とその順序を指定するには、
FEED_EXPORT_FIELDS
を使用します。 他のフィードエクスポーターもこのオプションを使用できますが、他の多くのエクスポート形式とは異なり、CSVは固定ヘッダーを使用するため、CSVでは重要です。
XML¶
FEED_FORMAT
:xml
使用されるエクスポーター:
XmlItemExporter
Pickle¶
FEED_FORMAT
:pickle
使用されるエクスポーター:
PickleItemExporter
Marshal¶
FEED_FORMAT
:marshal
使用されるエクスポーター:
MarshalItemExporter
ストレージ¶
フィード・エクスポートを使用する場合、URI を使用して( FEED_URI
設定を使用して)フィードを保存する場所を定義します。フィード・エクスポートは、URIスキームで定義された複数のストレージバックエンドタイプをサポートします。
すぐに使用できるストレージバックエンドは次のとおりです:
必要な外部ライブラリが利用できない場合、一部のストレージバックエンドは利用できません。 たとえば、S3バックエンドは、botocore または boto ライブラリがインストールされている場合にのみ使用できます(ScrapyはPython2でのみ boto をサポートします)。
ストレージURIパラメーター¶
ストレージURIには、フィードの作成時に置換されるパラメーターを含めることもできます。これらのパラメーターは次のとおりです:
%(time)s
- フィードの作成時にタイムスタンプに置き換えられます
%(name)s
- スパイダー名に置き換えられます
他の名前付きパラメーターは、同じ名前のスパイダー属性に置き換えられます。 たとえば、フィードが作成された瞬間に %(site_id)s
は spider.site_id
属性に置き換えられます。
以下に例を示します:
スパイダーごとに1つのディレクトリを使用してFTPに保存します:
ftp://user:password@ftp.example.com/scraping/feeds/%(name)s/%(time)s.json
スパイダーごとに1つのディレクトリを使用してS3に保存します:
s3://mybucket/scraping/feeds/%(name)s/%(time)s.json
ストレージ・バックエンド¶
ローカル・ファイルシステム¶
フィードはローカルファイルシステムに保存されます。
URIスキーム:
file
URI例:
file:///tmp/export.csv
必要な外部ライブラリ: なし
ローカルファイルシステムストレージ(のみ)の場合、 /tmp/export.csv
のように絶対パスを指定する場合、スキームを省略できます。 ただし、これはUnixシステムでのみ機能します。
FTP¶
フィードはFTPサーバーに保存されます。
URIスキーム:
ftp
URI例:
ftp://user:pass@ftp.example.com/path/to/export.csv
必要な外部ライブラリ: なし
FTPは、2つの異なる接続モードをサポートしています。アクティブまたはパッシブ(active or passive)です。Scrapyはデフォルトでパッシブ接続モードを使用します。 代わりにアクティブな接続モードを使用するには、 FEED_STORAGE_FTP_ACTIVE
設定を True
に設定します。
設定¶
これらは、フィードのエクスポートの構成(configuration)に使用される設定です:
FEED_URI¶
デフォルト: None
エクスポートフィードのURI。 サポートされているURIスキームについては、 ストレージ・バックエンド を参照してください。
この設定は、フィード・エクスポートを有効にするために必要です。
FEED_EXPORT_ENCODING¶
デフォルト: None
フィードに使用されるエンコード。
設定されていないか None
(デフォルト)に設定されている場合、歴史的な理由で、安全な数値エンコーディング( \uXXXX
シーケンス)を使用するJSON出力を除く、すべてでUTF-8を使用します。
JSONにもUTF-8が必要な場合は utf-8
を使用します。
FEED_EXPORT_FIELDS¶
デフォルト: None
エクスポートするフィールドのリスト。オプション。 例: FEED_EXPORT_FIELDS = ["foo", "bar", "baz"]
FEED_EXPORT_FIELDSオプションを使用して、エクスポートするフィールドとその順序を定義します。
FEED_EXPORT_FIELDSが空またはNone (デフォルト)の場合、Scrapyは辞書または Item
のサブクラスで定義されたフィールドを使用し、スパイダーが生成します。
エクスポーターがフィールドの固定セットを必要とする場合( CSV エクスポート形式の場合)、FEED_EXPORT_FIELDSが空またはNoneの場合、Scrapyはエクスポートされたデータからフィールド名を推測しようとします。今のところは、最初のアイテムのフィールド名を使用しています。
FEED_EXPORT_INDENT¶
デフォルト: 0
各レベルで出力をインデントするために使用されるスペースの量。 FEED_EXPORT_INDENT
が負でない整数の場合、配列要素とオブジェクトメンバーはそのインデントレベルできれいに印刷されます。インデントレベル 0
(デフォルト)、または負の場合、各アイテムは新しい行に配置されます。 None
は、最もコンパクトな表現を選択します。
現在、 JsonItemExporter
と XmlItemExporter
のみ実装されています。つまり、 .json
または .xml
にエクスポートする場合です。
FEED_STORAGE_FTP_ACTIVE¶
デフォルト: False
フィードをFTPサーバーにエクスポートするときにアクティブ接続モードを使用するか( True
)、代わりにパッシブ接続モードを使用するか( False
、デフォルト)。
FTP接続モードについては、アクティブFTPとパッシブFTPの違いは何ですか?(What is the difference between active and passive FTP?)を参照してください。
FEED_STORAGE_S3_ACL¶
デフォルト: ''
(空文字列)
プロジェクトによってAmazon S3にエクスポートされたフィードのカスタムACLを含む文字列。
利用可能な値の完全なリストについては、Amazon S3ドキュメントの Canned ACL 節にアクセスしてください。
FEED_STORAGES_BASE¶
デフォルト:
{
'': 'scrapy.extensions.feedexport.FileFeedStorage',
'file': 'scrapy.extensions.feedexport.FileFeedStorage',
'stdout': 'scrapy.extensions.feedexport.StdoutFeedStorage',
's3': 'scrapy.extensions.feedexport.S3FeedStorage',
'ftp': 'scrapy.extensions.feedexport.FTPFeedStorage',
}
Scrapyがサポートする組み込みのフィードストレージバックエンドを含む辞書。 FEED_STORAGES
でURIスキームに None
を割り当てることで、これらのバックエンドを無効にできます。 たとえば、組み込みのFTPストレージバックエンドを無効にするには、以下を(置換なしで) `` settings.py`` に配置します:
FEED_STORAGES = {
'ftp': None,
}
FEED_EXPORTERS_BASE¶
デフォルト:
{
'json': 'scrapy.exporters.JsonItemExporter',
'jsonlines': 'scrapy.exporters.JsonLinesItemExporter',
'jl': 'scrapy.exporters.JsonLinesItemExporter',
'csv': 'scrapy.exporters.CsvItemExporter',
'xml': 'scrapy.exporters.XmlItemExporter',
'marshal': 'scrapy.exporters.MarshalItemExporter',
'pickle': 'scrapy.exporters.PickleItemExporter',
}
Scrapyでサポートされている組み込みのフィードエクスポーターを含む辞書。 FEED_EXPORTERS
のシリアル化形式に None
を割り当てることで、これらのエクスポーターを無効にできます。 たとえば、組み込みのCSVエクスポーターを無効にするには、以下を(置換なしで)、 settings.py
に配置します:
FEED_EXPORTERS = {
'csv': None,
}