Поиск по блогу

вторник, 2 декабря 2014 г.

Зачем нужны Scrapy Feed exports и CsvItemExporter

Первый вариант настройки в документации, второй - super(SlybotCSVItemExporter, self).init(args, *kwargs) - чемпион ГитХаба, для начала я воспроизвел второй вариант от github agrimrules/Python-Web-Crawler но воспроизвел в посте Пробовал "Scrapy feed exporter" ... а до первого варианта здесь так и не дошел... Зато в этом посте около 30 ссылок !

Оказалось, что весь сыр-бор только из-за того, чтобы упорядочить поля в сsv файле

Начинаем со второго варианта, пока не попробовал, не понимал, как он рбоатет

Начал пробовать здесь, но в итоге перенес все отсюда в отдельный пост (ссылка в summary к этому посту)

Здесь далее описан процесс установки и фрагменты кода...

1. В проверенном пауке для тестов отключил ITEM_PIPELINES , но втавил FEED_EXPORTERS, естественно, не забыл проверить путь
In [2]:
%load C:\Users\kiss\Documents\GitMyScrapy\scrapy_xml_1\XMLFeedSpider\XMLFeedSpider\\settings.py
In []:
# Scrapy settings for XMLFeedSpider project
#
# For simplicity, this file contains only the most important settings by
# default. All the other settings are documented here:
#
#     http://doc.scrapy.org/en/latest/topics/settings.html
#

BOT_NAME = 'XMLFeedSpider'

SPIDER_MODULES = ['XMLFeedSpider.spiders']
NEWSPIDER_MODULE = 'XMLFeedSpider.spiders'

# Crawl responsibly by identifying yourself (and your website) on the user-agent
#USER_AGENT = 'XMLFeedSpider (+http://www.yourdomain.com)'
DOWNLOADER_MIDDLEWARES = {
        'scrapy.contrib.downloadermiddleware.useragent.UserAgentMiddleware' : None,
        'XMLFeedSpider.middleware.RotateUserAgentMiddleware' :400
    }

#ITEM_PIPELINES = {
#'XMLFeedSpider.pipelines.XmlfeedspiderPipeline':300,
#'XMLFeedSpider.pipelines_filr1.ItemsFiltrsPipeline':350,
#'XMLFeedSpider.pipelines_tofile.ProxyListWriterPipeline':400
# }

FEED_EXPORTERS = {
 'csv': 'XMLFeedSpider.itemexport.CSVOptionRespectingItemExporter',
}
2. Скопировал из apple/contrib/itemexport.py в папку с файлами настроек паука
In [3]:
%load C:\Users\kiss\Documents\GitMyScrapy\scrapy_xml_1\XMLFeedSpider\XMLFeedSpider\itemexport.py
In []:
"""
Created on Tue Nov 11 17:13:41 2014

@author: kiss

This is the copy of https://github.com/chappyhome/qidian/blob/0d87f422a0172b0607d59c38e276de4b77618ff3/apple/contrib/itemexport.py
"""

from scrapy.conf import settings
from scrapy.contrib.exporter import CsvItemExporter

class CSVOptionRespectingItemExporter(CsvItemExporter):
    def __init__(self, *args, **kwargs):
        delimiter = settings.get('CSV_DELIMITER', ',')
        kwargs['delimiter'] = delimiter
        super(CSVOptionRespectingItemExporter, self).__init__(*args, **kwargs)
  1. Запустил из папки проекта паука с опцией записи результата в файл scrapy crawl njit -o ''.csv -t csv"
In []:
C:\Users\kiss\Documents\GitHub_2\Pythscrapy crawl njit -o ''.csv -t csv"on-Web-Crawler-master\Python-Web-Crawler-master\example>
In []:
from scrapy.contrib.exporter import CsvItemExporter
from scrapy.conf import settings

class SlybotCSVItemExporter(CsvItemExporter):
    def __init__(self, *args, **kwargs):
        kwargs['fields_to_export'] = settings.getlist('CSV_EXPORT_FIELDS') or None
        super(SlybotCSVItemExporter, self).__init__(*args, **kwargs)
Посты чуть ниже также могут вас заинтересовать

Комментариев нет:

Отправить комментарий