当数据从Scrapy插入数据库时​​,使用Django信号

时间:2018-05-15 19:48:04

标签: python django scrapy

我想将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信号工作。

0 个答案:

没有答案