Scrapy выход в CSV из ноутбука Jupyter - PullRequest
0 голосов
/ 12 февраля 2020

Я закончил конвейер и паук все через блокнот Юпитера. Я думаю, что он все исправляет (работает нормально), но я указал, что он создает файл CSV с результатами на моем рабочем столе, но по какой-то причине не работает. Я думал, что это будет работать с использованием FEED_URI, но похоже, что это не так. Я уверен, что что-то упустил, но не могу понять где.

import scrapy
from scrapy.crawler import CrawlerProcess
import logging
from datetime import date
from scrapy import signals


class BBPipeline(object):
    @classmethod
    def from_crawler(cls, crawler):
        pipeline = cls()
        crawler.signals.connect(pipeline.spider_opened, signals.spider_opened)
        crawler.signals.connect(pipeline.spider_closed, signals.spider_closed)
        return pipeline

    def spider_opened(self, spider):
        self.file = open('/Desktop/bbdata.csv', 'w+b')
        self.exporter = CsvItemExporter(self.file)
        self.exporter.start_exporting()

    def spider_closed(self, spider):
        self.exporter.finish_exporting()
        self.file.close()

    def process_item(self, item, spider):
        self.exporter.export_item(item)
        return item


class BBItem(scrapy.Item):
    date = scrapy.Field()
    promo = scrapy.Field()



class BBSpider(scrapy.Spider):
    name = "bb"
    start_urls = [
        'https://www.bodybuilding.com/store/kaged-muscle/in-kaged.html?skuId=KAG3460042',
        'https://www.bodybuilding.com/store/kaged-muscle/in-kaged.html?skuId=KAG4690241'
    ]
    custom_settings = {'FEED_URI': '/Desktop/bbdata.csv','ITEM_PIPELINES':{'bb.pipelines.BBPipeline':300},'FEED_FORMAT':'csv'}

    def parse(self, response):

        item = BBItem()
        item['date'] = date.today()
        item['promo'] = response.css('article > div > section.col-sm-4 > div > form > div.sku-chooser__info > div  > span.vio-text--vio-green ::text').extract()
        yield item



process = CrawlerProcess()
process.crawl(BBSpider)
process.start()

1 Ответ

1 голос
/ 12 февраля 2020

Вы можете попробовать изменить пути ваших CSV-файлов на абсолютные пути. Пример

C:/your/path
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...