簡單的Python版本管理:pyenv Scrapy爬蟲入門教程一 Scrapy爬蟲入門教程二 Scrapy爬蟲入門教程三 Scrapy爬蟲入門教程四 Scrapy爬蟲入門教程五 Scrapy爬蟲入門教程六 Scrapy爬蟲入門教程七 Scrapy爬蟲入門教程八 Scrapy爬蟲入門教程九
導出文件序列化格式JSONJSON linesCSVxmlPickleMarshal存儲存儲URI參數存儲后端本地文件系統FTPS3標準輸出設置FEED_URIFEED_FORMATFEED_EXPORT_ENCODINGFEED_EXPORT_FIELDSFEED_STORE_EMPTYFEED_STORAGES_BASEFEED_EXPORTERSFEED_EXPORTERS_BASE
開發環境: Python 3.6.0 版本
(當前最新) Scrapy 1.3.2 版本
(當前最新)
新版本0.10。
實現爬蟲時最常需要的特征之一是能夠正確地存儲所過濾的數據,并且經常意味著使用被過濾的數據(通常稱為“export feed”)生成要由其他系統消耗的“導出文件” 。
Scrapy使用Feed導出功能即時提供此功能,這允許您使用多個序列化格式和存儲后端來生成包含已抓取項目的Feed。
為了序列化抓取的數據,Feed導出使用項導出器。這些格式是開箱即用的:
JSONJSON linesCSVXML但您也可以通過FEED_EXPORTERS設置擴展支持的格式 。
使用Feed導出時,您可以使用URI(通過FEED_URI設置)定義在哪里存儲Feed 。Feed導出支持由URI方案定義的多個存儲后端類型。
支持開箱即用的存儲后端包括:
本地文件系統FTPS3(需要 botocore或 boto)標準輸出如果所需的外部庫不可用,則某些存儲后端可能無法使用。例如,S3后端僅在安裝了botocore 或boto庫時可用(Scrapy僅支持boto到Python 2)。
存儲URI還可以包含在創建訂閱源時被替換的參數。這些參數是:
%(time)s - 在創建訂閱源時由時間戳替換%(name)s - 被蜘蛛名替換任何其他命名參數將替換為同名的spider屬性。例如, 在創建訂閱源的那一刻,%(site_id)s
將被spider.site_id
屬性替換。
這里有一些例子來說明:
存儲在FTP中使用每個蜘蛛一個目錄:ftp://user:passWord@ftp.example.com/scraping/feeds/%(name)s/%(time)s.json
存儲在S3使用每個蜘蛛一個目錄: s3://mybucket/scraping/feeds/%(name)s/%(time)s.json
訂閱源存儲在本地文件系統中。
URI方案: file
示例URI: file:///tmp/export.csv
所需的外部庫:none 請注意,(僅)對于本地文件系統存儲,如果指定絕對路徑,則可以省略該方案/tmp/export.csv
。這只適用于Unix系統。
訂閱源存儲在FTP服務器中。
URI方案:ftp
示例URI: ftp://user:pass@ftp.example.com/
path/to/export.csv所需的外部庫:none訂閱源存儲在Amazon S3上。
URI方案:s3
示例URI: s3://mybucket/path/to/export.csv
s3://aws_key:aws_secret@mybucket/path/to/export.csv
所需的外部庫:botocore或botoAWS憑證可以作為URI中的用戶/密碼傳遞,也可以通過以下設置傳遞:
AWS_access_KEY_ID
AWS_SECRET_ACCESS_KEY
Feed被寫入Scrapy進程的標準輸出。
URI方案:stdout
示例URI: stdout:
所需的外部庫:none這些是用于配置Feed導出的設置:
FEED_URI (強制性)FEED_FORMATFEED_STORAGESFEED_EXPORTERSFEED_STORE_EMPTYFEED_EXPORT_ENCODINGFEED_EXPORT_FIELDS默認: None
導出Feed的URI。請參閱支持的URI方案的存儲后端。
啟用Feed導出時需要此設置。
要用于Feed的序列化格式。有關可能的值,請參閱 序列化格式。
默認: None
要用于Feed的編碼。
如果取消設置或設置為None(默認),它使用UTF-8除了JSON輸出,/uXXXX由于歷史原因使用安全的數字編碼(序列)。
使用utf-8,如果你想UTF-8 JSON了。
默認: None
要導出的字段的列表,可選。示例:。FEED_EXPORT_FIELDS = [“foo”, “bar”, “baz”]
使用FEED_EXPORT_FIELDS選項定義要導出的字段及其順序。
當FEED_EXPORT_FIELDS為空或無(默認)時,Scrapy使用在Item蜘蛛正在產生的dicts 或子類中定義的字段。
如果導出器需要一組固定的字段(CSV導出格式為這種情況 ),并且FEED_EXPORT_FIELDS為空或無,則Scrapy會嘗試從導出的??數據中推斷字段名稱 - 當前它使用第一個項目中的字段名稱。
默認: False
是否導出空Feed(即,沒有項目的Feed)。
FEED_STORAGES 默認: {}
包含您的項目支持的其他Feed存儲后端的字典。鍵是URI方案,值是存儲類的路徑。
默認:
{ '': '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,}默認: {}
包含您的項目支持的其他導出器的字典。鍵是序列化格式,值是Item exporter類的路徑。
默認:
{ '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,}新聞熱點
疑難解答