Я хотел бы интегрировать Scrapy с Django.
Когда я вставляю данные в БД из Scrapy, сигнал Django не работает.
Это фрагмент кода, который используется для сигнала.
@receiver(post_save, sender=Page)
def create_page(sender, instance=None, created=False, **kwargs):
if created:
print('========== page created')
Это pipeline.py
, который используется для вставки данных в БД.
class CrawlerPipeline(object):
def __init__(self, unique_id, *args, **kwargs):
self.unique_id = unique_id
@classmethod
def from_crawler(cls, crawler):
return cls(
unique_id=crawler.settings.get('unique_id'),
)
def close_spider(self, spider):
pass
def process_item(self, item, spider):
site = Site.objects.get(id=self.unique_id)
page = Page(url=item['url'], site=site)
page.save()
return item
Как видите, данные вставляются в БД на части Scrapy и работают.
Но сигнал Django работает не так, как я ожидал.
Я не уверен, как заставить сигнал Django работать.