1. 程式人生 > >scrapy 使用Feed exports 輸出json lines檔案

scrapy 使用Feed exports 輸出json lines檔案

在settings檔案中加入下面兩行配置就可以開啟了

FEED_URI = 'file:///D:/vagrant/python/scrapy/123.jsonl'
FEED_FORMAT = 'jsonlines'

注意FEED_URI的配置(我的是在windows環境),如果在 (只有)儲存在本地檔案系統時,您可以指定一個絕對路徑 /tmp/export.csv 並忽略協議(scheme)。不過這僅僅只能在Unix系統中工作.

通過上面的配置就可以簡單的開啟並使用了不過會遇到中文的編碼問題這個可以在呼叫 scrapy.contrib.exporter.JsonItemExporter 的時候額外指定 ensure_ascii=False 就可以啦 答案地址在下面

https://segmentfault.com/q/1010000000367894

關於這部分全部的東西給大家放在下面:
匯出檔案

新版本0.10。

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

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

序列化格式

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

  • JSON
  • JSON lines
  • CSV
  • XML

但您也可以通過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方案定義的多個儲存後端型別。

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

本地檔案系統
FTP
S3(需要 botocore或 boto)
標準輸出
如果所需的外部庫不可用,則某些儲存後端可能無法使用。例如,S3後端僅在安裝了botocore 或boto庫時可用(Scrapy僅支援boto到Python 2)。

儲存URI引數

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

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

這裡有一些例子來說明:

本地檔案系統

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

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

FTP

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

訂閱源儲存在Amazon S3上。

URI方案: s3
示例URI:
s3://mybucket/path/to/export.csv
s3://aws_key:[email protected]/path/to/export.csv
所需的外部庫: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’,
}
rapy支援的內建feed匯出器的dict。您可以通過分配其中None的序列化格式來禁用任何這些匯出器FEED_EXPORTERS。例如,要禁用內建的CSV匯出器(無替換),請將其放置在settings.py:

FEED_EXPORTERS = {
    'csv': None,
}

相關推薦

scrapy 使用Feed exports 輸出json lines檔案

在settings檔案中加入下面兩行配置就可以開啟了 FEED_URI = 'file:///D:/vagrant/python/scrapy/123.jsonl' FEED_FORMAT = 'jsonlines' 注意FEED_URI的配置(我的是在

Scrapy——Feed exports

實現爬蟲時最經常提到的需求就是能合適的儲存爬取到的資料,或者說,生成一個帶有爬取資料的“輸出檔案”,來供其它系統使用。 Scrapy自帶了Feed輸出,並且支援多種序列化格式及儲存方式。 序列化方式 feed 輸出使用到了Item exporters。其自帶的型

nodejs寫入json檔案,格式化輸出json的方法

假如我需要把data序列化成json字串,然後寫入data.json檔案中,程式碼如下: 1 let str = JSON.stringify(data) 2 3 fs.writeFile('data.json',str,function(err){ 4 if (err) {res.status(5

json檔案轉為plist檔案輸出(及檔案存放路徑)

從xx.json檔案中讀取JSON資料,寫入到xx.plist檔案中,實現程式碼如下: NSString *path = @"/Users/apple/Desktop/testJtoP/testJtoP/1_category.json"; NSArray

WCF輸出JSON

msg for format) 代碼 current text == 判斷 tex public class MyService : IService { public Message GetXml(string format)

【巨坑】springmvc 輸出json格式數據的幾種方式!

mapping cep process 添加 exc 文件中 != style find 最近公司項目需要發布一些數據服務,從設計到實現兩天就弄完了,心中竊喜之。 結果臨近部署時突然發現。。。。。 服務輸出的JSON 數據中 date 類型數據輸出格式要麽是時間戳,要麽

當使用servlet輸出json時,瀏覽器端jquery的ajax遇到parse error的問題

包括 問題 json格式 dsm 註意 data json 返回 進行 在使用jquery的ajax進行請求發送並由服務端的servlet返回json格式的數據內容時,假設輸出內容沒有正確設置,會遇到client瀏覽器報告parse error的問題。這個問題的解決僅僅

Newtonsoft.Json輸出Json時動態忽略屬性

reat serializa ont 需求 我們 pri ret prot com 一,前言   最近做項目采用Json形式和其他客戶端交互,借助於Newtonsoft.Json 。   由於業務場景不同,輸出的Json內容也不同。要想忽略的屬性,可以借助Newtons

Scrapy指定順序輸出 -《狗嗨默示錄》-

item field *args spa lec div from font **kwargs items.py import scrapy class CollectipsItem(scrapy.Item): IP = scrapy.Field()

php api 接口輸出json 數據

baidu bsp 數據 map style http 輸出 clas nco 頁面調用接口,簡單寫個api 試試 如下 <?php $arr = array( array(‘url‘=>‘https://baidu.com‘

《xls json csv 檔案讀取》

#coding=utf-8 import xlrd import json import csv #地址前用'\'轉譯符要加 workbook=xlrd.open_workbook('D:/untitled/1022/date.xls') #提取表格名稱 sheets=workbook.sheet_n

argo的輸入輸出--output和input輸出目錄或檔案到下一步驟

轉載請註明出處: argo的輸入輸出–output和input輸出目錄或檔案到下一步驟 有部分場景需要使用output把目錄或者檔案傳遞到下一個步驟。 argo提供了兩種方式 一種是引數方式parameter 一種是元件方式artifacts 各自適用於不同的場景,引數方式是

Linux之終端資訊輸出到日誌檔案

在做除錯的時候,需要觀察終端輸出的內容,有時候終端輸出太多會被覆蓋掉,並且直接在終端觀察不太方便。將終端輸出的內容儲存在日誌檔案中,一方面可以便於檢視輸出內容,另一方面可以永久儲存,便於回看。因此本文對相關的方法進行整理總結。 方法一 把命令執行的結果儲存到檔案當中:用 >

Echarts最新json地圖檔案

ECharts 之前提供下載的向量地圖資料來自第三方,由於部分資料不符合國家《測繪法》規定,目前暫時停止下載服務。 如上面的引用所示,echarts無法下載最新的地圖資料了,最近在做北京地圖資料,發現下載的beijing.json檔案總是帶著宣武區和崇文區,而2010年

Ubuntu-ll命令輸出資訊中檔案大小的單位

Ubuntu-ll命令輸出資訊中檔案大小的單位 文章目錄 Ubuntu-ll命令輸出資訊中檔案大小的單位 ll命令 ll命令   ll並不是linux中的一個單獨的命令,它是ls -l的簡寫形式。   直接使用ll命

PHP中輸出json的值

<?php $json = '{"report":{"date":"2012-04-10","content":"abcdefght"}}'; $arr = (array) json_decode($json,true); echo '當前日期是:'. $arr['report']['da

檔案輸入輸出及csv檔案

讀取檔案 fileobject=open('b.txt') result=fileobject.read() print(result) fileobject.close() 測試結果如下圖所示: 寫入檔案: fileobject=open('c.txt',mode='w')

vue-cli(vue2.x)配置——axios訪問本地模擬的json資料檔案

有時候我們沒有後臺介面請求檔案,那麼我們可以自己在專案根目錄下模擬json資料檔案,然後通過請求這個檔案來渲染我們的元件。 1、配置build/webpack.dev.conf.js檔案 1.1、在const devWebpackConfig = merge(baseWebpackC

Access-培訓管理系統-13-輸出個人培訓檔案

微信公眾號原文 系統:Windows 7 軟體:Excel 2010 / Access 2010 這個系列開展一個新的篇章,主體使用Access,包括資料庫部分及介面部分,當然輸出部分也會涉及到Excel,Excel的可讀性還是比較好的 本公眾號的不同階

bodymovin輸出Json動畫為黑白的解決方案

bodymovin輸出為黑白的解決方案 Shawn AE CC2018 bodymovin 5.3.4 預計其他bodymovin版本的解決方法相同 最近工作原因,需要AE的bodymovin輸出json動畫. 但bodymovin輸出的json渲染出來的