[Scrapyフレームワーク]「バージョン2.4.0ソースコード」出力ファイル(フィードエクスポート)詳細記事

すべてのソースコード分析記事インデックスディレクトリポータル

[Scrapy Framework Analysis]バージョン2.4.0ソースコード:すべての構成ディレクトリインデックス

前書き

クローラーを実装するときに最も頻繁に言及される要件は、クロールされたデータを適切に保存できること、つまり、他のシステムで使用するためにクロールされたデータを含む「出力ファイル」(通常は「出力フィード」と呼ばれる)を生成できることです。

クロールされたすべてのコンテンツがデータウェアハウスに保存されている場合、このセクションは無視できます。

Scrapyにはフィード出力が付属しており、複数のシリアル化形式(シリアル化形式)とストレージ方法(ストレージバックエンド)をサポートしています。

シリアル化フォーマット

アイテムエクスポーターはフィード出力に使用されます。サポートされているタイプは、JSON、JSON行、CSV、XMLなどです。

データの種類 出力フォーマット アイテムタイプの出力
JSON json JsonItemExporter
JSON行 jsonlines JsonLinesItemExporter
CSV csv CsvItemExporter
XML xml XmlItemExporter
ピクルス 漬物 PickleItemExporter
元帥 元帥 MarshalItemExporter

データストレージ(ストレージ)

フィード出力を使用する場合、URL(FEED_URIで設定)を使用してストレージエンドを定義できます。フィード出力は、URIモードでサポートされる複数のストレージバックエンドタイプをサポートします。

サポートに付属するストレージバックエンドは、ローカルファイルシステム、FTP、S3(botoが必要)、およびラベル出力です。

ストレージURIパラメーター

ストレージURIにはパラメーターも含まれています。これらのパラメータは、フィードの作成時に上書きできます。

  • %(time)s-フィードの作成時にタイムスタンプで上書きされます
  • %(name)s-スパイダーの名前でカバー

他の名前付きパラメーターは、同じ名前のスパイダーの属性によってオーバーライドされます。たとえば、フィードが作成されると、%(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

ストレージバックエンド

ストレージタイプ システムの制限 URIスキーム 依存ライブラリ サンプル
ローカルファイルシステム Unix ファイル - file://tmp/export.csv
FTP - ftp - tp:// user:[email protected]/path/to/export.csv
S3 - s3 投票 s3:// aws_key:aws_secret@mybucket/path/to/export.csv
Google Cloud Storage(GCS) - gs - gs://mybucket/path/to/export.csv
標準出力 - stdout - stdout:

設定

  • FEEDS(必須)
  • FEED_EXPORT_ENCODING
  • FEED_STORE_EMPTY
  • FEED_EXPORT_FIELDS
  • FEED_EXPORT_INDENT
  • FEED_STORAGES
  • FEED_STORAGE_FTP_ACTIVE
  • FEED_STORAGE_S3_ACL
  • FEED_EXPORTERS
  • FEED_EXPORT_BATCH_ITEM_COUNT

出力(FEEDS)

デフォルトの出力辞書形式。この設定は、フィードのエクスポート機能を有効にするために必要です。

{
    
    
    'items.json': {
    
    
        'format': 'json',
        'encoding': 'utf8',
        'store_empty': False,
        'fields': None,
        'indent': 4,
        'item_export_kwargs': {
    
    
           'export_empty_fields': True,
        },
    },
    '/home/user/documents/items.xml': {
    
    
        'format': 'xml',
        'fields': ['name', 'price'],
        'encoding': 'latin1',
        'indent': 8,
    },
    pathlib.Path('items.csv'): {
    
    
        'format': 'csv',
        'fields': ['price', 'name'],
    },
}

主なパラメータのリスト:

バージョン パラメータ名 パラメータの説明
- フォーマット 必須のシリアル化値の形式
- batch_item_count FEED_EXPORT_BATCH_ITEM_COUNT
2.3.0 エンコーディング FEED_EXPORT_ENCODING、jsonのエンコード形式を設定します
2.3.0 田畑 FEED_EXPORT_FIELDS、出力フィールドを設定します
2.3.0 インデント FEED_EXPORT_INDENT、インデント方法を設定します
2.3.0 item_export_kwargs dictの出力カテゴリ、
2.4.0 上書き 上書きするか(True)、コンテンツに追加するか(False)
2.4.0 store_empty FEED_STORE_EMPTY、空をエクスポートするかどうか
2.4.0 uri_params FEED_URI_PARAMSは、適用するパラメーターを設定するために使用されます。

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',
}

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',
}

FEED_EXPORT_BATCH_ITEM_COUNT
Scrapyは複数の出力ファイルを生成し、各出力ファイルで指定された数のアイテムを保存します。

おすすめ

転載: blog.csdn.net/qq_20288327/article/details/113499876