从Django调用Scrapy蜘蛛

时间:2017-02-27 23:54:27

标签: python django scrapy

我在同一个工作区中有一个带django和scrapy文件夹的项目:

my_project/
    django_project/
        django_project/
            settings.py
        app1/
        app2/
        manage.py
        ...
    scrapy_project/
        scrapy_project/
            settings.py
        scrapy.cfg
        ...

我已经将scrapy与我的django app1模型连接起来,所以每次运行我的蜘蛛时,它都会将收集的数据存储在我的postgresql数据库中。 这就是我的scrapy项目可以访问django模型的方式

#in my_project/scrapy_project/scrapy_project/settings.py
import sys
import os
import django

sys.path.append('/../../django_project')
os.environ['DJANGO_SETTINGS_MODULE'] = 'django_project.settings'
django.setup()

当我从命令行调用蜘蛛时,一切都很好,但是当我想从django视图或django中的Celery任务调用蜘蛛作为脚本时,例如:

from scrapy.crawler import CrawlerProcess
from scrapy.utils.project import get_project_settings
process = CrawlerProcess(get_project_settings())
process.crawl('spider_name')
process.start()

我收到错误:

KeyError: 'Spider not found: spider_name'

我想我想告诉Django Scrapy位于哪里(就像我在scrapy设置中所做的那样),但我不知道如何。 说实话,我甚至不确定如何为这个项目设计我的文件夹结构是正确的选择。

1 个答案:

答案 0 :(得分:0)

遵循scrapy doc中的示例:

parse_product_info()