Scrapy爬蟲入門教程十 Feed exports(匯出檔案)

NO IMAGE

Scrapy爬蟲入門教程一 安裝和基本使用 

Scrapy爬蟲入門教程二 官方提供Demo 

Scrapy爬蟲入門教程三 命令列工具介紹和示例 

Scrapy爬蟲入門教程四 Spider(爬蟲) 

Scrapy爬蟲入門教程五 Selectors(選擇器) 

Scrapy爬蟲入門教程六 Items(專案) 

Scrapy爬蟲入門教程七 Item Loaders(專案載入器) 

Scrapy爬蟲入門教程八 互動式 shell 方便除錯 

Scrapy爬蟲入門教程九 Item Pipeline(專案管道) 

Scrapy爬蟲入門教程十 Feed exports(匯出檔案) 

Scrapy爬蟲入門教程十一 Request和Response(請求和響應) 

Scrapy爬蟲入門教程十二 Link Extractors(連結提取器)

Scrapy爬蟲入門教程十三 Settings(設定)

 

 

 

開發環境: 
Python 3.6.0 版本 (當前最新) 
Scrapy 1.3.2 版本 (當前最新)

 

目錄

匯出檔案

序列化格式

JSON

JSON lines

CSV

XML

Pickle

Marshal

儲存

儲存URI引數

儲存後端

本地檔案系統

FTP

S3

標準輸出

設定

FEED_URI

FEED_FORMAT

FEED_EXPORT_ENCODING

FEED_EXPORT_FIELDS

FEED_STORE_EMPTY

FEED_STORAGES_BASE

FEED_EXPORTERS

FEED_EXPORTERS_BASE


 

匯出檔案

新版本0.10。

實現爬蟲時最常需要的特徵之一是能夠正確地儲存所過濾的資料,並且經常意味著使用被過濾的資料(通常稱為“export feed”)生成要由其他系統消耗的“匯出檔案” 。

Scrapy使用Feed匯出功能即時提供此功能,這允許您使用多個序列化格式和儲存後端來生成包含已抓取專案的Feed。

序列化格式

為了序列化抓取的資料,Feed匯出使用項匯出器。這些格式是開箱即用的:

但您也可以通過FEED_EXPORTERS設定擴充套件支援的格式 。

JSON

  • FEED_FORMAT: json
  • 使用出口: JsonItemExporter
  • 如果您對大型Feed使用JSON,請參閱此警告

JSON lines

  • FEED_FORMAT: jsonlines
  • 使用出口: JsonLinesItemExporter

CSV

  • FEED_FORMAT: csv
  • 使用出口: CsvItemExporter
  • 指定要匯出的列及其順序使用 FEED_EXPORT_FIELDS。其他Feed匯出程式也可以使用此選項,但它對CSV很重要,因為與許多其他匯出格式不同,CSV使用固定標頭。

XML

  • FEED_FORMAT: xml
  • 使用出口: XmlItemExporter

Pickle

  • FEED_FORMAT: pickle
  • 使用出口: PickleItemExporter

Marshal

  • FEED_FORMAT: marshal
  • 使用出口: MarshalItemExporter

儲存

使用Feed匯出時,您可以使用URI(通過FEED_URI設定)定義在哪裡儲存Feed 。Feed匯出支援由URI方案定義的多個儲存後端型別。

支援開箱即用的儲存後端包括:

如果所需的外部庫不可用,則某些儲存後端可能無法使用。例如,S3後端僅在安裝了botocore 或boto庫時可用(Scrapy僅支援boto到Python 2)。


儲存URI引數

儲存URI還可以包含在建立訂閱源時被替換的引數。這些引數是:

  • %(time)s – 在建立訂閱源時由時間戳替換
  • %(name)s – 被蜘蛛名替換

任何其他命名引數將替換為同名的spider屬性。例如, 在建立訂閱源的那一刻,%(site_id)s將被spider.site_id屬性替換。

這裡有一些例子來說明:

  • 儲存在FTP中使用每個蜘蛛一個目錄: 
  • 儲存在S3使用每個蜘蛛一個目錄: 
    • s3://mybucket/scraping/feeds/%(name)s/%(time)s.json

儲存後端

本地檔案系統

訂閱源儲存在本地檔案系統中。

URI方案: file 
示例URI: file:///tmp/export.csv 
所需的外部庫:none 
請注意,(僅)對於本地檔案系統儲存,如果指定絕對路徑,則可以省略該方案/tmp/export.csv。這隻適用於Unix系統。

FTP

訂閱源儲存在FTP伺服器中。

  • URI方案: ftp
  • 示例URI: ftp://user:[email protected]/path/to/export.csv
  • 所需的外部庫:none

S3

訂閱源儲存在Amazon S3上。

  • URI方案: s3
  • 示例URI: 
  • 所需的外部庫:botocore或boto

AWS憑證可以作為URI中的使用者/密碼傳遞,也可以通過以下設定傳遞:

  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY

標準輸出

Feed被寫入Scrapy程序的標準輸出。

  • URI方案: stdout
  • 示例URI: stdout:
  • 所需的外部庫:none

設定

這些是用於配置Feed匯出的設定:

  • FEED_URI (強制性)
  • FEED_FORMAT
  • FEED_STORAGES
  • FEED_EXPORTERS
  • FEED_STORE_EMPTY
  • FEED_EXPORT_ENCODING
  • FEED_EXPORT_FIELDS

FEED_URI

預設: None

匯出Feed的URI。請參閱支援的URI方案的儲存後端。

啟用Feed匯出時需要此設定。

FEED_FORMAT

要用於Feed的序列化格式。有關可能的值,請參閱 序列化格式。

FEED_EXPORT_ENCODING

預設: None

要用於Feed的編碼。

如果取消設定或設定為None(預設),它使用UTF-8除了JSON輸出,\uXXXX由於歷史原因使用安全的數字編碼(序列)。

使用utf-8,如果你想UTF-8 JSON了。

FEED_EXPORT_FIELDS

預設: None

要匯出的欄位的列表,可選。示例:。FEED_EXPORT_FIELDS = [“foo”, “bar”, “baz”]

使用FEED_EXPORT_FIELDS選項定義要匯出的欄位及其順序。

當FEED_EXPORT_FIELDS為空或無(預設)時,Scrapy使用在Item蜘蛛正在產生的dicts 或子類中定義的欄位。

如果匯出器需要一組固定的欄位(CSV匯出格式為這種情況 ),並且FEED_EXPORT_FIELDS為空或無,則Scrapy會嘗試從匯出的​​資料中推斷欄位名稱 – 當前它使用第一個專案中的欄位名稱。

FEED_STORE_EMPTY

預設: False

是否匯出空Feed(即,沒有專案的Feed)。

FEED_STORAGES 
預設: {}

包含您的專案支援的其他Feed儲存後端的字典。鍵是URI方案,值是儲存類的路徑。

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儲存後端的字典。您可以通過分配其中None的URI方案 來禁用這些後端FEED_STORAGES。例如,要禁用內建FTP儲存後端(無替換),請將其放置在settings.py:

FEED_STORAGES = {
'ftp': None,
}

FEED_EXPORTERS

預設: {}

包含您的專案支援的其他匯出器的字典。鍵是序列化格式,值是Item exporter類的路徑。

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匯出器的dict。您可以通過分配其中None的序列化格式來禁用任何這些匯出器FEED_EXPORTERS。例如,要禁用內建的CSV匯出器(無替換),請將其放置在settings.py:

FEED_EXPORTERS = {
'csv': None,
}

 

轉載自:https://blog.csdn.net/qq_41703291/article/details/80433071