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