劉碩のScrapyノート(九、exporterエクスポート)

2094 ワード

scrapyの一般的なサポートエクスポートフォーマット:1.json 2.csv 3.xmlをエクスポートするときは、エクスポートされたファイルパス(-o)とデータフォーマット(-t)に注意してください.
scrapy crawl -t json -o book1.json

一般的には「-t」を省略します.
scrapy crawl -o book1.json

次のコマンドを使用します(本のレイアウトが間違っています).
scrapy crawl books -o export_data\%(name)s\%(time
)s.csv

'export_を作成できますData'フォルダ(任意に命名可能)には'spiders_が含まれています.name'フォルダには、作成日に命名されたcsvファイルがあります.
コマンドラインの構成は煩雑ですが、settingsで設定することもできます.
1.FEED_URI:ファイルパスのエクスポート
FEED_URI='export_data\%(name)s.data'

2.FEED_FORMAT:エクスポートファイルのフォーマット
FEED_FORMAT='csv'

3.FEED_EXPORT_ENCODING:エクスポートファイルの符号化フォーマット(デフォルトでは、jsonはデジタル符号化、その他のフォーマットは'utf-8'符号化)
FEED_EXPORT_ENCODING='gbk'

4.FEED_EXPORT_FIELDS:すべてのフィールドがデフォルトでエクスポートされ、フィールドがソートされます.
FEED_EXPORT_FIELDS=['name','author','price']

5.FEED_EXPORTERS:ユーザー定義Exporter辞書、新しいフォーマットを追加して使用:
FEED_EXPORTERS={'excel':'my_project.my_exporters.ExcelItemExporter'}

本の例に従って、excelフォーマット(settingsと同じディレクトリ)を定義し、my_を新規作成します.exporters.pyファイル:
from scrapy.exporters import BaseItemExporter
import xlwt

class ExcelItemExporter(BaseItemExporter):
    def __init__(self,file,**kwargs):
        self._configure(kwargs)
        self.file=file
        self.wbook=xlwt.Workbook()
        self.wsheet=self.wbook.add_sheet('scrapy')
        self.row=0

    def finish_exporting(self):
        self.wbook.save(self.file)

    def export_item(self, item):
        fields=self._get_serialized_fields(item)
        for col,v in enumerate(x for _,x in fields):
            self.wsheet.write(self.row,col,v)
        self.row+=1

settingsで設定:
FEED_EXPORTERS={'excel':'Book.my_exporters.ExcelItemExporter'}

スキップコマンド:
scrapy crawl books -t excel -o books.xls

コードはしばらく読めないので、後で理解します.