невозможно подключить паук закрыт при сдаче в ведро s3 - PullRequest
0 голосов
/ 01 ноября 2019
# -*- coding: utf-8 -*-
import scrapy
from scrapy.utils.response import open_in_browser
from pydispatch import dispatcher
from scrapy.signalmanager import SignalManager
#from scrapy.xlib.pydispatch import dispatcher
from scrapy import signals
class ExampleSpider(scrapy.Spider):
    name = 'forever'
    allowed_domains = ['example.com']
    kohlind = max_kohls = 0
    total_products = 0
    colected = 0
    items = []
    #AWS_ACCESS_KEY_ID = 'id'
    #AWS_SECRET_ACCESS_KEY = 'pass'
    start_urls=['https://www.example.com/']
    custom_settings = {'FEED_URI' : f's3://example-products/fulltest.csv',
    'FEED_EXPORT_FIELDS': ['ITEM_ID','URL','SELLER','PRICE','SALE_PRICE','MAIN_IMAGE','OTHER_IMAGE','SKU','PRODUCT_NAME']

    }
    def __init__(self):
        SignalManager(dispatcher.Any).connect(receiver=self._close, signal=signals.spider_closed)
#spider code
    def _close(self):
        print(f"\n\nClosing Spider with {len(self.items)} New Items")
        for i in self.items:
            if "URL" in i.keys():
                yield item

        print("Done")

Программа не подключается к функции _close, ошибки не обнаружены, и элементы урожайности в коде паука загружаются нормально (кроме _close ничего не происходит)

Я попытался удалить s3 внастройки, все работало нормально (т.е. вошел в функцию _close)

Как это исправить?

1 Ответ

1 голос
/ 03 ноября 2019

Попробуйте этот код ниже, и он должен работать

# -*- coding: utf-8 -*-
from scrapy import signals
from scrapy.xlib.pydispatch import dispatcher

class ExampleSpider(scrapy.Spider):
    name = 'forever'

    def __init__(self):
        dispatcher.connect(self.spider_closed, signals.spider_closed)

    def spider_closed(self, spider):
        print(f"\n\nClosing Spider with {len(self.items)} New Items")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...