Я закончил конвейер и паук все через блокнот Юпитера. Я думаю, что он все исправляет (работает нормально), но я указал, что он создает файл 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()